在没有偏移时,以本地时间显示数据库中的UTC datetime
Displaying UTC datetime from database in local time when it has no offset
对于我的数据库中的一条记录,我们存储了两个时间戳,它们表示同一时刻。
UTC格式,如'2016-09-23 11:43:34.0000000'
另一个具有将数据上传到DB的设备的本地时间,例如'2016-09-23 06:43:34.0000000'。
由于列为datetime2,因此它们都没有存储偏移量。我的问题是,在我的服务器上使用c#或在我的客户端应用程序上使用Javascript(如moment.js),我是否能够在用户本地时间显示UTC时间戳?从客户端应用程序,我可以得到当前用户的时间偏移和做一个计算,我只是不明白哪种类型的计算我应该做对UTC时间戳。
我看过这篇文章中的例子,但我注意到他们使用的原始日期时间格式('2015-02-05T07:52:27.59')与我的有很大不同。
下面是解析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');
使用var date =new GetUTCDate(//any date);
你将得到UTC格式的日期
如果你想要一个c#解决方案,你可以使用DateTimeOffset对象。具体来说,你需要使用tryParse方法,它将允许你在UTC中打印它。
如果你更喜欢js的解决方案,而不是与时刻往往是一个更好的选择。我认为您需要moment(). utcoffset()函数来操作当前的时间戳。
相关文章:
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- AJAX,用于显示数据库数据
- 谷歌地图-数据库中的标记只显示最后一行的信息
- 以html形式显示sqlite数据库中的数据(phonegap)
- 显示给定半径内数据库中的所有位置
- 当用户键入一封信时,如何使用ajax自动完成来显示MySQL数据库中的值
- 使用模式消息/窗口显示数据库记录
- 尝试显示使用 php 和数据库检索的缩略图中的全尺寸图像
- 使用 jQuery UI 折叠面板显示 couchDB 数据库搜索结果时出现问题
- 使用自动完成文本框从mysql数据库获取表记录并显示在文本字段中
- 从下拉框中选择用户信息,并使用进度计数器显示数据库中的选定项目
- 无限滚动:从数据库加载所有数据并滚动以显示更多
- 如何在每次在 php 中单击提交时逐个显示数据库中的项目
- 错误:通过ajax(从数据库)显示注释(laravel 5.2)
- PHP/Javascript -在while循环中从mysql数据库显示谷歌地图上的标记
- 通过servlet将数据从数据库显示到完整日历—没有列出事件
- 使用javascript从parse.com数据库显示图像的简单方法
- 当主id发生变化时,如何从数据库显示详细信息
- 使用php/javascript从mysql数据库显示谷歌地图上的标记
- 使用javascript从数据库显示