JavaScript - 将本地时间转换为UTC或特定国家/地区的时间

时间:2015-11-19 19:36:22

标签: javascript c# timezone

我正在构建一个调度程序应用程序。前端是使用JavaScript开发的,后端我们使用.NET和SQL服务器。

将要求用户选择一个时间(这将是他的机器的本地时间)。我想把那个时间转换成东部标准时间。

调度程序应用程序将基于EST运行。

我将保存用户选择的本地时间,用户的时区信息以及用户选择的时间等效的EST。

我可以使用以下fiddle

来获取TimeZone
var tz = jstz.determine();
console.log(tz.name());

要获得EST等效时间,我将使用TimeZoneInfo类 当DST发生变化时,我将有一个存储过程来更新相应的EST时间。

请告诉我这是否有效?

2 个答案:

答案 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

相关问题