我正在构建一个调度程序应用程序。前端是使用JavaScript开发的,后端我们使用.NET和SQL服务器。
将要求用户选择一个时间(这将是他的机器的本地时间)。我想把那个时间转换成东部标准时间。
调度程序应用程序将基于EST运行。
我将保存用户选择的本地时间,用户的时区信息以及用户选择的时间等效的EST。
我可以使用以下fiddle
来获取TimeZonevar tz = jstz.determine();
console.log(tz.name());
要获得EST等效时间,我将使用TimeZoneInfo类 当DST发生变化时,我将有一个存储过程来更新相应的EST时间。
请告诉我这是否有效?
答案 0 :(得分:1)
将要求用户选择一个时间(这将是他的机器的本地时间)。
没关系。对于调度应用程序,这是有道理的。
我想将该时间转换为东部标准时间。
调度程序应用程序将基于EST运行。
这不是个好主意。服务器的位置应该是无关紧要的。特别是,美国东部时间在美国东部时间和东部时间之间波动。基于它的EST仅考虑其中的一半,并且基于ET将意味着处理代码中的波动。
通常,您的服务器应设置为UTC,但服务器上运行的代码不应关心服务器设置的时区。
在服务器上使用DateTime.UtcNow
获取当前的UTC时间。无论服务器的时区如何,该值都是相同的。
我将保存用户选择的本地时间,用户的时区信息以及用户选择的时间等效的EST。
前两个是的。对于第三个,您应该存储UTC等效项 - 而不是EST等效项。
如果时区规则在事件发生之前发生变化,您还需要准备重新计算UTC值。
我可以通过使用以下小提琴获得TimeZone ......
jstz会猜测用户的时区 - ,但这只是猜测。这很可能是错的。从时区列表中选择默认选项非常棒,但不应该以用户无法覆盖的方式直接使用它。
此外,它还会返回IANA TZDB标识符,例如America/Los_Angeles
。这些目前不适用于Windows上的TimeZoneInfo
。要使用这些,您需要在C#代码中使用Noda Time。
答案 1 :(得分:-1)
使用此
var utc_date = new Date().toISOString();
它将返回一个UTC格式的字符串,如2015-11-19T19:41:45.865Z