JAVA时间

Date类

java.util提供了Date类来封装日期和时间。

Date();--当前时间
Date(long millisec);--距离格林威治时间1970年1月1日millisec毫秒的时间
new Date().getTime() 时间戳
System.currentTimeMillis() 取得系统当前时间秒数

/**
     SimpleDateFormat函数语法:
     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 时区
     */
      Date now = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      // Current Date: 星期六 2018.11.10 at 12:28:40 上午 CST
      System.out.println("Current Date: " + ft.format(now));
      String time = "星期六 2018.11.10 at 12:28:40 上午 CST";
      Date date = ft.parse(time);
      // Sat Nov 10 00:28:40 CST 2018
      System.out.println(date);
      // 取得系统当前时间秒数
      System.out.println(System.currentTimeMillis());

Calendar类

  • Set设置
    Calendar c1 = Calendar.getInstance();
    调用:
    public final void set(int year,int month,int date)
    c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
    利用字段类型设置
    如果只设定某个字段,例如日期的值,则可以使用如下set方法:
    public void set(int field,int value)
    把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
    c1.set(Calendar.DATE,10);
    把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算
    c1.set(Calendar.YEAR,2008);
    其他字段属性set的意义以此类推

  • Add设置
    Calendar c1 = Calendar.getInstance();
    把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算
    c1.add(Calendar.DATE, 10);
    把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算
    c1.add(Calendar.DATE, -10);

  • Calendar类对象信息的获得
    Calendar c1 = Calendar.getInstance();
    // 获得年份
    int year = c1.get(Calendar.YEAR);
    // 获得月份
    int month = c1.get(Calendar.MONTH) + 1;
    // 获得日期
    int date = c1.get(Calendar.DATE);
    // 获得小时
    int hour = c1.get(Calendar.HOUR_OF_DAY);
    // 获得分钟
    int minute = c1.get(Calendar.MINUTE);
    // 获得秒
    int second = c1.get(Calendar.SECOND);
    // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
    int day = c1.get(Calendar.DAY_OF_WEEK);

Instant类

所谓的 Instant 类代表的是某个时间(有点像 java.util.Date),它是精确到纳秒的(而不是象旧版本的Date精确到毫秒)。如果使用纳秒去表示一个时间则原来使用一位Long类型是不够的,需要占用更多一点的存储空间,实际上其内部是由两个Long字段组成,第一个部分保存的是自标准Java计算时代(就是1970年1月1日开始)到现在的秒数,第二部分保存的是纳秒数(永远不会超过999,999,999)。

Instant now = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
System.out.println("秒数:"+now.getEpochSecond());
System.out.println("毫秒数:"+now.toEpochMilli());
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容