我有两个网站,一个是 C#.NET,另一个是 Java。我需要在 C# 中创建一个 DateTime 对象,将其序列化,并将其附加到 Java 站点可以理解的 URL。
我知道我应该使用 UTC 时间来执行此操作。至于在 C# 中序列化 DateTime 并在 Java 中反序列化,最好的“存储”格式是什么?
我想我应该在 C# 中使用像刻度这样的东西,但我不确定 Java 是否支持该功能。
最佳答案
我认为您可以使用此 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。
关于java - 在 C# 和 Java 之间传递 DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40591899/