我想在Java中将时间设置为纪元日期时间。 我该如何做到这一点? 这样我就可以从纪元日期时间中获取年份、月份、日期等信息。
使用 new Date(0L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(sdf.format(new Date(0L)));
请注意你的时区,因为它将根据默认设置而改变。
更新
在Java 8中,您可以使用新的java.time
库
您有这个常量Instant.EPOCH
据我理解,您只想将其存储在某个变量中?那么请使用 Date epoch = new Date(0);
尝试这个
Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
c.setTimeInMillis(0);
int day = c.get(Calendar.DATE);
int month = c.get(Calendar.MONTH) + 1;
int year = c.get(Calendar.YEAR);
Instant.EPOCH
麻烦的旧日期时间类,包括Date
和Calendar
现在已经过时,被java.time类所取代。许多java.time功能已经向Android进行了后移(见下文)。
要获取仅包含日期值的Java&Unix纪元参考日期1970-01-01
,请使用LocalDate
。LocalDate
类表示仅包含日期值而不包含时间和时区的值。
LocalDate epoch = LocalDate.ofEpochDay( 0L ) ;
Instant.EPOCH
。Instant
类表示时间线上的一个瞬间,以UTC为基准,分辨率为纳秒(最多九位小数)。Instant epoch = Instant.EPOCH ;
Z
代表Zulu
,意为UTC。Period
类。Period period = Period.between(
LocalDate.ofEpochDay( 0 ) ,
LocalDate.now( ZoneId.of( "America/Montreal" ) )
) ;
Period
的讨论和示例。
java.time框架是内置于Java 8及更高版本中的。这些类取代了老旧的传统日期时间类,例如java.util.Date
、Calendar
和SimpleDateFormat
。
Joda-Time项目现在处于维护模式,建议迁移到java.time类。
要了解更多,请查看Oracle教程。并在Stack Overflow上搜索许多示例和解释。规范是JSR 310。