如何在没有CET的情况下输出日期/时间?

时间:2017-10-22 22:21:49

标签: java datetime simpledateformat datetime-format

我正在尝试获取当前日期和时间,并创建一个包含当前时间/日期和下一个小时的集合,等等。

我是Java的初学者,面临两个问题。输出是:

  

10月23日星期六00:07:27 CET 1937

     

Sat 10月23日01:07:27 CET 1937

  1. 如何在没有CET 1973的情况下获得日期/时间?
  2. 为什么平日(sat)不是实际的(星期一)(2天前)?
  3. 源代码是:

        SimpleDateFormat format1 = new SimpleDateFormat("EEE, d  MMM  HH:mm");
        System.out.println(format1.getCalendar().getTime());
        format1.getCalendar().add(Calendar.HOUR, 1);        
        System.out.println(format1.getCalendar().getTime());
    

1 个答案:

答案 0 :(得分:0)

验证主机上是否设置了正确的日期和时间。你的电脑似乎设置错了。访问http://time.is/

使用现代java.time类而不是麻烦的旧Calendar类。

以UTC为单位获取当前时刻,分辨率最高可达纳秒。

Instant instant = Instant.now() ;

指定所需/预期的时区。

ZoneId z = ZoneId.of( "Europe/Paris" ) ) ;

调整到所需的时区。

ZonedDateTime zdt = instant.atZone( z ) ;

验证星期几。

DayOfWeek dow = zdt.getDayOfWeek() ;

收集这个时刻以及接下来的两个小时。

List< ZonedDateTime > moments = new ArrayList<>( 3 ) ;
moments.add( zdt ) ;
moments.add( zdt.plusHours( 1 ) ) ;
moments.add( zdt.plusHours( 2 ) ) ;

使用DateTimeFormatter类生成一个String来表示这些值中的任何一个。搜索Stack Overflow获取更多信息,因为已经多次介绍过。