Javascript 使用带有角度UI引导计时器的时区

Javascript 使用带有角度UI引导计时器的时区,javascript,angularjs,datetime,angular-ui-bootstrap,Javascript,Angularjs,Datetime,Angular Ui Bootstrap,我不知道有什么简单的方法来描述这个,所以这个描述会有点长。事先道歉 好吧,想象你住在芝加哥,有一家公司。你可以编写一个web应用程序,这样你就可以为你的员工制定一个在线时间表,他们可以在每周工作时查看。也就是说,您选择一个日期(在本例中使用Angular UI引导Datepicker),然后选择一个时间(使用Timepicker),并将员工设置为在该时间工作 现在,一周后你需要去加利福尼亚出差。然而,当你外出时,你仍然需要制定下周的日程安排。因为javascript日期总是根据当地时间进行调整,

我不知道有什么简单的方法来描述这个,所以这个描述会有点长。事先道歉

好吧,想象你住在芝加哥,有一家公司。你可以编写一个web应用程序,这样你就可以为你的员工制定一个在线时间表,他们可以在每周工作时查看。也就是说,您选择一个日期(在本例中使用Angular UI引导Datepicker),然后选择一个时间(使用Timepicker),并将员工设置为在该时间工作

现在,一周后你需要去加利福尼亚出差。然而,当你外出时,你仍然需要制定下周的日程安排。因为javascript日期总是根据当地时间进行调整,如果你在加利福尼亚州杰克登录查看时将“杰克晚上8点工作”放在日程表上,他会看到他晚上10点工作,因为加州当地时间晚上8点是CST当地时间晚上10点

因此,您希望在日程表生成器中选择的所有日期和时间始终位于您的“家”时区。也就是说,无论你在哪里,如果你设置“Jake在晚上8点工作”,它将始终显示为晚上8点CST

好的,这是基本设置。在“Jake在晚上8点工作”消息发送过来后,我使用了一点黑客解决方案服务器端来完成所有这些工作。我从发送的时间中提取月份、日期、年份、小时和分钟,使用moment-timezone.js在我的“家”时区中使用该日期/时间创建一个新时刻,然后将该新时刻转换为UTC并保存到DB

那么,回到客户端。我有3页。“新计划”,它将计划发送到服务器,在服务器上执行所有转换工作。然后是一个“查看时间表”页面,在该页面中,我返回所有UTC时间,并使用

Date.toLocalString('en-US', {set of locale options including timeZone: 'America\Chicago'})
因此,我的“新计划”和“查看计划”页面工作正常。使用准确的输入时间将所有时间重新制作为CST时间,然后转换为UTC。然后显示视图将它们输出为正确的时区

现在,我的问题是最后一页。我的“编辑计划”页面,用于更改已保存的计划

在时间从服务器返回到编辑页面后,我想不出重新调整时间的方法。所以,在这个例子中,我最初输入了“Jake在晚上8点工作(我当时在PST工作)”,它被转换为“Jake在CST晚上8点工作”,它被转换为“Jake在UTC 15:00工作”并保存。现在,我的“查看时间表”页面提取了这些信息,当我将这些信息加载到我的时间选择器的模型中时,它将采用15:00 UTC,并在太平洋标准时间下午6点加载时间选择器,因为我在试图编辑时间表时仍在Cali中


我想不出一个好办法来处理这件事。或者我可以使用一个更好的时间选择器小部件来设置默认时区,从中解析ng模型日期对象?我不知道,如果您有任何想法,我们将不胜感激

一般来说,使用moment.js来处理日期对象总是比较好的。问题是,angular ui Datepicker和Timepicker不能处理瞬间。必须使用本机日期对象。始终可以使用装饰器或自定义指令使其与angular ui一起工作。也许这会有帮助。一般来说,使用moment.js来处理日期对象总是比较好的。问题是,angular ui Datepicker和Timepicker不能处理瞬间。必须使用本机日期对象。始终可以使用装饰器或自定义指令使其与angular ui一起工作。也许这会有帮助。