每当我将日期时间保存到我的数据库中时,我清楚地看到我的数据库中有2小时的转变。
我知道这是关于UTC的事情,但我更喜欢在没有UTC的数据库中保留确切的日期。
这是我的代码:
var now = "06/08/2013 20:18"; // Eigth of june 2013
myObservable(now);
然后我检查我的数据库(sql server),我看到2013-06-08 18:18:00.000
。
我的问题:如何在我的sql server表中记录当前日期时间?
PS:我可以暂时使用,但我没有成功(仍有转变)。
答案 0 :(得分:0)
这是我的实施:
function today() {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var h = today.getHours();
var m = today.getMinutes();
var yyyy = today.getFullYear();
if (dd < 10) { dd = '0' + dd } if (mm < 10) { mm = '0' + mm } today = dd + '/' + mm + '/' + yyyy + ' ' + h + ':' + m;
return today;
};
var now = moment.utc(today(), "DD/MM/YYYY hh:mm").toDate();
myObservable(now);
这一次,变量现在包含:Sat Jun 08 2013 23:08:00 GMT+0200 (Romance Daylight Time)
我的数据库中的值为2013-06-08 21:08:00.000
。
我的数据库中记录的这个值是现在的实际日期时间。
更新
要回复John,会显示一些关于浏览器究竟是什么的代码,以及它如何在服务器端代码中放入数据库
通过我自己建议的解决方案:
var now = moment.utc(today(), "DD/MM/YYYY hh:mm").toDate();
// now <- Sun Jun 9 10:40:00 UTC+0200 2013
myObservable(now);
这是真正的约会时间。
PS:现在的时间是:08:40。
用一个简单的案例:
var now = new Date();
// now <- Sun Jun 9 08:45:54 UTC+0200 2013
myObservable(now);
与实际日期相比,此日期的移动时间为2小时。
认识到,当夏令时开始和停止时,您的本地时区偏差可能会每年更改两次....
我不需要跟踪这些时间偏移,我们的应用程序将在本地使用。
使用简单的DateTime字段很难跟踪这个模糊的小时。如果你不想存储UTC,并且你想要它准确,那么你需要使用DateTimeOffset
所以我尝试使用您建议的DateTimeOffset
字段类型,结果如下:
var now = new Date();
// now <- Sun Jun 9 08:54:12 UTC+0200 2013
myObservable(now);
与实际日期相比,此日期转移了2个小时。问题仍然存在。
使用Google Chrome和Internet Explorer进行测试。