在没有偏移的情况下,以当地时间从数据库显示UTC日期时间

时间:2016-09-26 03:54:28

标签: javascript c# datetime momentjs

对于我的数据库中的一个记录,我们存储两个代表同一时刻的时间戳。

其中一个是'2016-09-23 11:43:34.0000000'

还有另一个设备本地时间将数据上传到数据库,例如'2016-09-23 06:43:34.0000000'

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

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

3 个答案:

答案 0 :(得分: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');

答案 1 :(得分:1)

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

您将获得UTC格式的日期

答案 2 :(得分:1)

如果需要c#解决方案,可以使用DateTimeOffset对象。具体而言,您将需要使用tryParse方法,该方法允许您以UTC格式打印它。

如果您更喜欢js解决方案而不是随时随地往往是更好的选择。我相信你需要moment()。utcOffset()函数来操纵你当前的时间戳。