美文网首页
JAVA时间

JAVA时间

作者: 菜菜少吃菜 | 来源:发表于2018-11-10 01:14 被阅读0次

    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());
    

    相关文章

      网友评论

          本文标题:JAVA时间

          本文链接:https://www.haomeiwen.com/subject/wyiaxqtx.html