对于我的数据库中的一个记录,我们存储两个代表同一时刻的时间戳。
其中一个是'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')与我的很不一样。
答案 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()函数来操纵你当前的时间戳。