2016-09-26 68 views
0

对于我数据库中的其中一条记录,我们存储了代表相同时刻的两个时间戳。在没有偏移量的情况下在本地时间显示来自数据库的UTC日期时间

其中之一为UTC如本“2016年9月23日11:43:34.0000000”

而另一个具有本地时间的上载数据到DB如此设备'2016-09-23 06:43:34.0000000'

由于列是datetime2,它们都没有存储偏移量。我的问题是,在我的客户端应用程序上使用我的服务器上的C#或Javascript(如moment.js),我能够在用户本地时间显示UTC时间戳吗?从客户端应用程序中,我可以获取当前用户的时间偏移量并进行计算,但我不明白我应该对UTC时间戳执行哪种类型的计算。

我看过这篇文章中的例子Here,但已经注意到他们使用的原始日期时间格式('2015-02-05T07:52:27.59')与我的很不一样。

回答

2

下面是解析和转换utc时间到本地的各种方法。我更喜欢时区变化。

var utcMoment = moment.utc('2016-09-23 11:43:34.3456789', 'YYYY-MM-DD hh:mm:ss.SSSSSSS').format('YYYY-MM-DD HH:mm:ss.SSS'));  

//Using Date 
var localTime = moment.utc(utcMoment).toDate().format('YYYY-MM-DD HH:mm:ss'); 
//Using local 
var localTimeMoment = moment.utc(utcMoment).local().format('YYYY-MM-DD HH:mm:ss'); 
//Using Timezone 
var localTimeTz = moment.utc(utcMoment).tz('America/Chicago').format('YYYY-MM-DD HH:mm:ss'); 
//Using Offset 
var localTimeOffset = moment.utc(utcMoment).utcOffset('-05:00').format('YYYY-MM-DD HH:mm:ss'); 
+0

有一个问题,我注意到你的初始utc时间戳包含小数点后面的各种数字,在我的情况下它总是以.000000存储在数据库中。这会对你的上述结果产生什么影响? –

+0

我不认为它会有任何效果。请验证。 – Veeram

1

使用 var date =new GetUTCDate(//any date);

你会得到如果想有一个C#解决方案,您可以使用DateTimeOffset对象在UTC甲

+0

我已经在UTC日期,在上面的例子是2016年9月23日11:43:34.0000000我的问题是我怎么能显示这个时间戳在用户本地时间,当我的UTC日期没有一个偏移量。 –

1

日期。具体而言,您需要使用tryParse方法,该方法允许您使用UTC打印。

如果您更喜欢js解决方案,那么与时间往往是更好的选择。我相信你需要使用()。utcOffset()函数来操纵你当前的时间戳。

相关问题