Как узнать текущее время UTC в секундах - PullRequest
9 голосов
/ 28 сентября 2011

У меня есть приложение, которое должно сравнивать время в секундах.

Я хочу знать, как получить текущее время UTC в секундах.

Может кто-нибудь опубликовать пример того, как мы можем сделать это на Java?

Ответы [ 7 ]

16 голосов
/ 28 сентября 2011

Вы можете использовать это, чтобы получить прохождение часового пояса в часовом поясе, в котором вы хотите время, обратно в

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");
11 голосов
/ 28 сентября 2011
3 голосов
/ 16 мая 2012

Йода делает все просто

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();
2 голосов
/ 16 мая 2012
 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();


    }
1 голос
/ 23 ноября 2016

Получить текущее время UTC в секундах (с 1.5 ):

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

в соответствии с Javadoc:

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

Возвращает:

разница, измеренная в миллисекундах, между текущим временем и полуночью 1 января 1970 года UTC.

0 голосов
/ 25 января 2019

Чтобы сохранить дату как целое число вместо длинного, вы можете разделить на 1000 и при необходимости вычесть другую дату, например 1 января 2019 года:

private int getUTC()
{
    Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    cal1.set(2019, 1, 1);
    long millis1 = cal1.getTimeInMillis();

    //Current date in milliseconds
    long millis2 = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());

    // Calculate difference in seconds
    long diff = millis2 - millis1;
    return (int)(diff / 1000);
}
0 голосов
/ 13 сентября 2014

Это работает:

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