我有一个表格,可以输入在某个特定时间开始的事件。比方说上午9点。
要分配日期/时间对象,我正在使用MomentJs。在不同时区显示时会出现问题。
在伦敦将按预期显示9am
-在基辅将显示11am
。
如何使MomentJS和浏览器忽略与用户相关的时区,而仅显示我给的时间?
这是我的代码:
<p>
Start time:
{moment(event.startDate).format("HH:mm")}
</p>
答案 0 :(得分:2)
假设您已将日期存储为utc(在这种情况下可能应该保存),则可以使用以下内容:
@Output
import matplotlib.pyplot as plt
output = [['010', '01', '7'],
['010', '02', '6'],
['010', '03', '24'],
['010', '04', '6'],
['015', '02', '8'],
['015', '03', '27'],
['015', '04', '27'],
['020', '01', '130'],
['020', '02', '140'],
['020', '03', '202'],
['020', '04', '3'],
['021', '01', '3'],
['021', '02', '4'],
['021', '03', '22'],
['021', '04', '1'],
['025', '01', '13'],
['025', '02', '52'],
['025', '03', '82']]
listx = []
listy = []
for i in output:
listx.append((i[1]))
listy.append((i[2]))
plt.plot(listx,listy,'ro')
@Output(plt.show())
答案 1 :(得分:1)
让我用Vanilla JavaScript提供替代答案。如果要将时区设置为“中立”,则可以先使用toISOString()将其转换为UTC。
const current = new Date();
const utcCurrent = current.toISOString();
console.log(utcCurrent);
如果要将其转换为特定的时区,例如伦敦,则可以使用toLocaleString()。不过请注意timezone
的{{3}}。
const londonTime = new Date().toLocaleString('en-US', { timeZone: 'Europe/London' })
console.log(londonTime);
答案 2 :(得分:1)
您想要的是标准化的日期时间。由于时区的概念是一个相当随意的构造,因此可能会造成一些混乱。
我喜欢将Datetime值视为“绝对”和“相对”。无论您处于哪个时区,“绝对”日期时间都是正确的。最常见的示例是UTC(+000)和UNIX时间(也称为Unix纪元,POSIX时间或Unix Timestampe)。>
UTC非常明显。当前时间为+000时区。 UNIX时间更有趣。它表示自1970年1月1日以来经过的秒数。
您应该始终将数据存储在客户端和后端中,作为“绝对”时间。我更喜欢UNIX时间,因为它表示为单个整数(nice和clean)。
moment.js
为您做到了。实例化moment
对象时,可以使用:
var date = moment.utc(utcString)
或Unix时间
var date = moment.unix(unixInt)
然后您可以使用此对象以所需的任何形式显示日期:
console.log(date.tz.("America/Toronto"))