【发布时间】:2021-07-15 15:33:27
【问题描述】:
我发现了很多关于使用 Date() 和获取时区的好信息,但是有些东西不起作用。我将 GraphQL(来自 Sanity)设置为使用 formatString,如下所示:
export default function MinutesItemGrid() {
const { minutes } = useStaticQuery(graphql`
query {
minutes: allSanityMinutes {
nodes {
endTime(formatString: "h:mma [on] MM/DD/YYYY")
}
}
}
`);
然后在.map 中调用它:
const allMinutes = minutes.nodes;
return (
<CardStyles>
{allMinutes.map((minute) => (
<ItemStyles>
<div className="card" key={minute.id}>
<div className="content">Meeting began at: {minute.endTime}</div>
</div>
</ItemStyles>
))}
</CardStyles>
);
显示为 2020 年 10 月 14 日晚上 11:33。这比应有的时间提前了 6 小时。
我知道这会返回标准的 UTC 时间。我知道如何获取本地时间偏移 (new Date().getTimezoneOffset();) 和获取本地时区 (Intl.DateTimeFormat().resolvedOptions().timeZone),但我没有看到将时区更改为 MST(或本地时间)而不是 UTC 的选项。我尝试以各种方式减去 6 小时,尝试使用 moment.js 和 moment.js 时区根据他们的文档更改时区。我刚刚发现 Luxon 现在是一个更好的选择,但即使在他们的文档中,从 GraphQL 提取数据时我也看不到解决方案。
【问题讨论】:
标签: javascript graphql timezone sanity