JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何将JavaScript日期的时区从浏览器保留到服务器,然后返回?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,使用日期和时间控制,用户选择日期和时间,使得字符串表示如下:
"6-25-2012 12:00:00 PM"

这样,这个用户就在EST时区.该字符串传递给服务器,将其转换为.NET datetiR_716_11845@e对象,然后将其存储在SQL Server的datetiR_716_11845@e列中.

当日期稍后返回到浏览器时,需要将其转换为日期,但是当上述字符串输入到正在丢失4个小时的日期时.我相信这是因为在创建JavaScript日期时没有指定时区,它默认为当地时间,而且从EST开始,距离GMT为-400,从12点起减去4小时,尽管下午12点是指定为EST,用户在EST时区的机器上选择它.

很明显,在传递给服务器以保持原始datetiR_716_11845@e字符串之前,需要添加一些东西.推荐的方法是什么?

解决方法@H_874_12@
不要依赖JavaScript的Date构造函数来解析字符串.行为和受支持的格式在每个浏览器和区域设置上有很大差异. Here只是直接使用Date对象的一些默认行为.

如果您必须来自字符串,请尝试使用标准格式,如ISO8601.您以该格式发出的日期为“2012-06-25T12:00:00”.使用JavaScript最简单的方法是使用moment.js.

另外,要注意你实际上代表什么意思.现在,您通过当地的日期/时间,保存本地/日期/时间,并返回本地日期/时间.一路上,什么是“本地”的想法可能会改变.

在许多情况下,日期/时间旨在代表一个确切的时间.要做这项工作,您需要从客户端输入的本地时间转换为UTC.发送UTC到您的服务器,并存储.之后,检索UTC并将其发送回客户端,将其作为UTC处理并转换回本地时间.你可以使用moment.js轻松地完成所有这些工作:

// I'll assume these are the inputs you have.  Adjust accordingly.
var dateString = "6-25-2012";
var @R_772_6561@ring = "12:00:00 PM";

// Construct a moment in the default local time zone,using a specific format.
var m = moment(dateString + " " + @R_772_6561@ring,"M-D-YYYY h:mm:ss A");

// Get the value in UTC as an ISO8601 formatted String
var utc = m.toISOString(); // output: "2012-06-25T19:00:00.000Z"

在.Net中的服务器上:

var dt = datetiR_716_11845@e.Parse("2012-06-25T19:00:00.000Z",// from the input variable
                        CultureInfo.InvariantCulture,// recommended for ISO
                        Date@R_772_6561@yles.RoundtripKind) // honor the Z for UTC kind

存储在数据库中.稍后检索并发回:

// when you pull it from your database,set it to UTC kind
var dt = datetiR_716_11845@e.SpecifyKind((datetiR_716_11845@E)reader["yourfield"],datetiR_716_11845@eKind.Utc);

// send it BACk in ISO format:
var s = dt.ToString("o"); // "o" is the ISO8601 "round-trip" pattern.

将其传回javascript中的javascript.jim:

// construct a moment:
var m = moment("2012-06-25T19:00:00.000Z"); // use the value from the server

// display it in this user's local time zone,in whatever format you want
var s = m.format("LLL");   // "June 25 2012 12:00 PM"

// or if you need a Date object
var dt = m.toDate();

看 – 这很简单,你不需要在时区内看到任何东西.

大佬总结

以上是大佬教程为你收集整理的如何将JavaScript日期的时区从浏览器保留到服务器,然后返回?全部内容,希望文章能够帮你解决如何将JavaScript日期的时区从浏览器保留到服务器,然后返回?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。