我有创造的蒙戈数据库的Java VS C#毫秒时间戳代
private static long ukTimeStringToUtcMillis(String s) {
SimpleDateFormat sdf = makeSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
try {
return sdf.parse(s).getTime();
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
private static SimpleDateFormat makeSimpleDateFormat(String s) {
SimpleDateFormat sdf = new SimpleDateFormat(s);
sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
return sdf;
}
毫秒时间戳和地方它,我创造“2015年10月1日00:00时戳下面的Java代码: 00" 使用简单
long l = ukTimeStringToUtcMillis("2015-10-01T00:00:00.000");
这给了我的14436.54亿时间戳【JAVA],使用http://www.epochconverter.com/epoch/timezones.php?epoch=1443654000000&tz=Europe%2FLondon我们可以看到,这给“中时区欧洲/伦敦星期四2015年10月1日00:00:00(上午) (BST)”。现在
,我的问题(或缺乏理解!)是,我有相当的代码在C#中做转换为Unix毫秒为单位
public static class DateTimeHelpers
{
public static DateTime UnixEpoch()
{
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
}
public static DateTime FromMillisecondsSinceUnixEpoch(long milliseconds)
{
return UnixEpoch().AddMilliseconds(milliseconds).ToUniversalTime();
}
public static long ToMillisecondsSinceUnixEpoch(DateTime dateTime)
{
return (long)(dateTime - UnixEpoch()).TotalMilliseconds;
}
}
,要获得该毫秒“2015年10月1日00:00:00" 我做
DateTime dt = new DateTime(2015, 10, 1, 0, 0, 0, 0, DateTimeKind.Utc);
long l = DateTimeHelpers.ToMillisecondsSinceUnixEpoch(dt);
但是这给l = 1443657600000
[C#]其转化http://www.epochconverter.com/epoch/timezones.php?epoch=1443657600000&tz=Europe%2FLondon给 “周四2015年10月1日01:00:00(上午)在时区欧洲/伦敦(BST)” 。
- 这是为什么给+01:00?
- 我怎样才能获得C#代码产生究竟什么的Java呢?
这是非常重要的,我可以一致地从两种语言查询数据库中的时间戳,但目前C#给我一个小时的差异。
感谢您的时间。
答案:为了得到这个工作,我改变了方法
public static long ToMillisecondsSinceUnixEpoch(DateTime dateTime)
{
return (long)(dateTime.ToUniversalTime().Subtract(UnixEpoch())).TotalMilliseconds;
}
和使用
DateTime dt = new DateTime(2015, 10, 1, 0, 0, 0, 0);
lonf l = DateTimeHelpers.ToMillisecondsSinceUnixEpoch(dt);
注缺乏DateTimeKind
并在新ToMillisecondsSinceUnixEpoch()
方法使用ToUniversalTime()
。
但是,我并不十分感谢DateTime
在我使用ToUniversalTime()
之前所做的事情。在创建初始DateTime
的使用DateTimeKind.UTC
应该这样做?任何关于DateTime
在这个(对我来说奇怪的情况下)发生了什么澄清,将不胜感激。