java中日期类型

1.Date

   1.1 生成Date对象

         Date date = new Date()
                 当new出的Date对象不含参数时,date即为当前系统时间(年月日,时分秒均包含
         Date date = new Date(System.currentTimeMillis());
                  带参数时,直接以参数作为时间

   1.2 输出Date对象

       Thu Aug 29 14:38:58 CST 2013

2.SimpleDateFormat

   2.1 特定字符串类型的日期转化为Date

        SimpleDateFormat sdf = new SimpleDateFormat("yy:MM:dd");
        String time = "13:07:25";
	Date date = sdf.parse(time);

   2.2 Date对象转化为特定字符串类型,改进输出

        SimpleDateFormat sdf = new SimpleDateFormat("yy:MM:dd");
        Date date = new Date();
        String strDate = sdf.format(date);

       则输出strDate 就为14:07:18

注:事件格式

  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区

3.Calendar

             推荐使用Calendar

   3.1 获得Calendar实例(Calendar为抽象类)

       使用Calendar静态方法 :Calendar calendar = Calendar.getInstance();
       生成Calendar的实现类 :Calendar calendar = new GregorianCalendar()

    3.2 对Calendar各个时间字段赋值

         3.2.1 使用Date实例赋值
这样Calendar中的所有字段均被设置为Date中的各个值
                 
         calendar.setTime(date);
        3.2.2 单独设置各个字段                
         calendar.set(1990, 8, 29, 23, 8, 19);<p></p>

     3.3 获得时间的各个字段值

       dateCalendar.get(Calendar.YEAR)
       dateCalendar.get(Calendar.MONTH)
       dateCalendar.get(Calendar.DATE)
       timeCalendar.get(Calendar.HOUR_OF_DAY)
       timeCalendar.get(Calendar.MINUTE)
       timeCalendar.get(Calendar.SECOND)

      说明:HOUR_OF_DAY指的是24小时制的小时,HOUR获得的是12小时制的时间

     3.4 例子

        1)获得n天前或后的当日的开始时间
long getTimeWithNaturalDaysLong(int n, long calcTime) {
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTimeInMillis(calcTime);
    cal.add(Calendar.DATE, n);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTimeInMillis();
}
         2)获得本月第一天
long getNaturalMonthBeginTime (long calcTime){
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTimeInMillis(calcTime);
    cal.set(Calendar.DATE, 1);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTimeInMillis();
}
        3) 获得上个月最后一天
long getNaturalMonthEndTime (long calcTime){
    GregorianCalendar cal = new GregorianCalendar();
    cal.setTimeInMillis(calcTime);
    cal.set(Calendar.DATE, 1);
    cal.add(Calendar.DATE, -1);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTimeInMillis();
}
      实质上就是先将日期设置为1号,再减去一天就是上个月最后一天

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值