Как правильно узнать текущее время в Java? - PullRequest
1 голос
/ 10 марта 2011

Каков соответствующий код Java для этого фрагмента кода C #?

public static readonly DateTime Epoch = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);

public static long Now
{
    get { return (long)(DateTime.UtcNow - Epoch).TotalMilliseconds; }
}

Я знаю, что мог бы рассчитать это с помощью объекта Date, но не отличается ли Calendar от Java откак C # DateTime?

В настоящее время я использую этот кусок Java:

public static long getCurrentTimeMillis(){
    TimeZone here = TimeZone.getDefault();
    Time time = new Time(here.toString());
    time.setToNow();
    return time.toMillis(false);
}

Но различия между двумя частями кода значительны ... Код C # имеет более 1,5на миллион миллисекунд больше, чем код Java ... Как я могу получить правильное время в миллисекундах из кода Java?

Ответы [ 3 ]

9 голосов
/ 10 марта 2011

Используйте это:

System.currentTimeMillis()

Это unixtime с разрешением в миллисекундах, то есть миллисекундами с полуночи 1 января 1970 года, эпоха

Преобразуйте это в свою альтернативную эпоху:

long Offset = new Date(100, 0, 1, 0, 0, 0).getTime();
long DotNetTime = System.currentTimeMillis() - Offset;

Конечно, было бы целесообразно рассчитать это смещение один раз и сделать его постоянным.

3 голосов
/ 10 марта 2011

System.currentTimeMillis () является правильным

1 голос
/ 10 марта 2011

Попробуйте

System.currentTimeMillis()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...