如何以秒为单位获取当前UTC时间

我有一个应用程序,需要以秒为单位比较时间。

我想知道如何以秒为单位获取当前的UTC时间。

有人可以发布一个例子,我们如何在Java中做到这一点?

你可以使用它来获得你想要时间的时区传递时区

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 

然后,您可以在日历对象上调用您想要的任何内容

 System.out.println(cal.get(Calendar.YEAR)); System.out.println(cal.get(Calendar.HOUR)); System.out.println(cal.get(Calendar.HOUR_OF_DAY)); System.out.println(cal.get(Calendar.MINUTE)); 

下面的示例以秒为单位比较两个日历

 Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("UTC")); Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("UTC")); // Set the dates for calendars cal1.set(2011, 1, 1); cal2.set(2011, 2, 2); // Get the represented date in milliseconds as a long long milis1 = cal1.getTimeInMillis(); long milis2 = cal2.getTimeInMillis(); // Calculate difference in milliseconds long diff = milis2 - milis1; // Calculate difference in seconds long diffSecs = diff / 1000; System.out.println("In seconds: " + diffSecs + " seconds"); 

System.currentTimeMillis的()

Joda让一切变得简单

 import org.joda.time.ReadableInstant; import org.joda.time.DateTime; import static org.joda.time.DateTimeZone.UTC; import static org.joda.time.Seconds.secondsBetween; ... ReadableInstant start = new DateTime("2011-01-01", UTC); ReadableInstant end = new DateTime("2011-02-02", UTC); int secondsDifference = secondsBetween(start, end).getSeconds(); 
  public static long getUtcTime(long time) { System.out.println("Time="+time); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date dbefore=new Date(time); System.out.println("Date before conversion="+format.format(dbefore)); Calendar c = Calendar.getInstance(); c.setTimeInMillis(time); TimeZone timezone = c.getTimeZone(); int offset = timezone.getRawOffset(); if(timezone.inDaylightTime(new Date())){ offset = offset + timezone.getDSTSavings(); } int offsetHrs = offset / 1000 / 60 / 60; int offsetMins = offset / 1000 / 60 % 60; System.out.println("offset: " + offsetHrs); System.out.println("offset: " + offsetMins); c.add(Calendar.HOUR_OF_DAY, (-offsetHrs)); c.add(Calendar.MINUTE, (-offsetMins)); System.out.println("Date after conversion: "+format.format(c.getTime())); System.out.println("Time converted="+c.getTime().getTime()); return c.getTime().getTime(); } 

以秒为单位获取当前UTC时间(自1.5起 ):

 TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) 

根据Javadoc的说法:

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#currentTimeMillis

返回:

当前时间与UTC时间1970年1月1日午夜之间的差异,以毫秒为单位。

这有效:

  Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); GregorianCalendar gregorianCalendar = new GregorianCalendar ( calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND) ); return gregorianCalendar.getTime();