2013-07-04 35 views

回答

5

使用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))); 

照顾你时区因为它会改变取决于你在默认情况下是什么。

UPDATE 在java中8,你可以使用新java.time

你这种无休止Instant.EPOCH

4

据我所知,你只想将它存储在一些变量?所以使用 Date epoch = new Date(0);

3

试试这个

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

TL;博士

Instant.EPOCH 

使用java.time

包括DateCalendar在内的麻烦的旧日期时间类现在是遗留的,被java.time类取代。很多java.time功能都被移植到了Android上(见下文)。

要获得Java & Unix epoch reference日期为1970-01-01的日期值,请使用LocalDateLocalDate类表示没有时间和不带时区的仅限日期的值。

LocalDate epoch = LocalDate.ofEpochDay(0L) ; 

epoch.toString:1970-01-01

要获得同样的划时代的日期时间值,使用常量Instant.EPOCHInstant类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数点后最多九(9)位数字)。

Instant epoch = Instant.EPOCH ; 

epoch.toString():1970-01-01T00:00:00Z

在标准ISO 8601输出的Z是短期的和Zulu装置UTC

要获得此后数年,数月,数天,请使用Period类。

Period period = Period.between( 
    LocalDate.ofEpochDay(0) , 
    LocalDate.now(ZoneId.of("America/Montreal")) 
) ; 

搜索堆栈溢出有关Period的更多讨论和示例。


关于java。时间

java.time框架内置于Java 8及更高版本。这些类取代了日期时间类legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?