如何正确获取Java中的当前时间?

时间:2011-03-10 14:12:17

标签: c# java time

这段C#代码的相应Java代码是什么?

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对象来计算它,但不是来自Java的Calendar与C#的DateTime不同吗?

目前我使用的这篇文章是“Java:

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

但两段代码之间的差异很大...... C#代码比Java代码多出150万毫秒...... 我怎样才能从Java代码中获得正确的时间(以毫秒为单位)?

3 个答案:

答案 0 :(得分:9)

使用此:

System.currentTimeMillis()

这是具有毫秒分辨率的unixtime,即自1970年1月1日午夜起的毫秒,the epoch

将此转换为您的替代纪元:

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

当然,计算此偏移一次并使其成为常数是可取的。

答案 1 :(得分:3)

System.currentTimeMillis()是正确的

答案 2 :(得分:1)

尝试

System.currentTimeMillis()