在c#和Java之间传递DateTime

本文关键字:DateTime 之间 Java | 更新日期: 2023-09-27 18:17:54

我有两个网站,一个是在c#。NET,另一个是Java。我需要在c#中创建一个DateTime对象,将其序列化,并将其附加到Java站点可以理解的URL。

我知道我应该使用UTC时间来做这件事。至于在c#中序列化DateTime和在Java中反序列化它,什么是最好的"存储"格式?

我想我应该在c#中使用像tick这样的东西,但我不确定Java是否支持该功能。

在c#和Java之间传递DateTime

我认为你可以使用这个Java类中的转换在。net时间间隔(距离魔法时间100纳秒)和Java时间间隔(距离另一个时间毫秒)之间进行转换:

public class DateTime 
{
    static private long TICKS_AT_EPOCH = 621355968000000000L;
    long ticks;
    public DateTime(long t) {
        ticks = t;
    }
    public DateTime(Date date) {
        ticks = TICKS_AT_EPOCH + 10000 * date.getTime();
    }
    public long Ticks()  { return ticks; }
    static public DateTime fromJavaMillis(long millis)
    {
        return new DateTime(TICKS_AT_EPOCH + 10000 * millis);
    }
    public Date ToDate()
    {
        return new Date((ticks-TICKS_AT_EPOCH)/10000);
    }
}

注意-我肯定我可能在互联网上的某个地方发现了这个-所以感谢发起者:)。

然后你可以使用这个的刻度来序列化——它可以直接在另一边构造一个。net DateTime。