Javascript 如何在Angular中使用DatePipe管理时区?

Javascript 如何在Angular中使用DatePipe管理时区?,javascript,angular,typescript,pipe,Javascript,Angular,Typescript,Pipe,假设一个MySQL数据库以标准SQL时间戳格式发送时间戳,格式为YYYY-MM-DD HH:MI:SS 这里,2019-09-08 08:00:00 现在,我需要在我的网站上显示它,根据网站打开的时区来操作时间戳 角度文档中提到的管道 确实将输出错误为2019年9月8日星期日上午8:00:00 GMT+05:30(因为它自动将时区添加到提供的时间中)。我需要将此+05:30添加到2019年9月8日上午8:00。此外,我不想显示GMT+05:30 另外,我非常清楚,这可以通过使用moments.j

假设一个MySQL数据库以标准SQL时间戳格式发送时间戳,格式为YYYY-MM-DD HH:MI:SS

这里,2019-09-08 08:00:00

现在,我需要在我的网站上显示它,根据网站打开的时区来操作时间戳

角度文档中提到的管道

确实将输出错误为2019年9月8日星期日上午8:00:00 GMT+05:30(因为它自动将时区添加到提供的时间中)。我需要将此+05:30添加到2019年9月8日上午8:00。此外,我不想显示GMT+05:30


另外,我非常清楚,这可以通过使用moments.js或纯javascript或某种自定义管道来解决。但是,我想知道是否有一个我无法理解的管道刻度。

我想您希望您的时间以UTC为单位,然后添加用户的时区。 如果用户拥有
GMT+05:30
,则数据库中的时间
2019-09-08 08:00:00
应在前端显示为
2019年9月8日下午1:30:00

如果没有第三方库或编写凌乱的代码,您似乎无法在前端实现所需的结果。如果不想使用这些库,则需要调整后端以包含时区

要删除
GMT+05:30
Sunday
部分,只需删除
zzzz
EEEE

   {{event.event_start_ts | date:'MMMM d, y, h:mm:ss a'}}

因此,正如大家所建议的,我已经按照以下步骤归档了需求

步骤1:设置MySQL时区以存储绝对时间

SET GLOBAL time_zone = '+00:00'; 
SELECT @@global.time_zone, @@session.time_zone;
步骤2:将MySQL连接时区设置为“+00:00”。(对我来说是npm mysql)示例响应日期格式现在是2019-09-08T03:00:00.000Z

第3步:让Angular发挥其魔力,格式设置不会影响该值

固定时区

{{event.event_start_ts | date:'EEEE, MMMM d, y, h:mm:ss a zzzz':'GMT+05:30' }}
自适应时区

{{event.event_start_ts | date:'EEEE, MMMM d, y, h:mm:ss a zzzz'}}

感谢大家。

我认为要获得这样的定制输出,您需要编写一个定制管道,甚至可能只是一个函数,将值发送回与正则表达式进行比较,以删除您不需要的额外文本。感谢您在帖子中引用文档。向所有人展示你来这里之前先阅读的内容:)“标准格式”。。。这不是ISO标准format@charlietfl,YYYY-MM-DD HH:MI:SS是MySQL存储时间戳的格式。此外,是的,它不是ISO标准,所以我将其存储为GMT以保持一致性。正确但更安全的是,以javascript
Date
熟悉的ISO格式发送给客户端。可能会遇到非标准格式的跨浏览器问题。是一个简单的转换服务器side@AbhijitSrivastava-你能在问题中说明输出应该是什么吗?我不清楚为什么Flyii应该再次阅读这个问题。@ConnorsFan,我做的编辑提到datepipe在提供SQL格式的日期时给出了错误的输出。事实上,它认为时区已经被添加到其中。
{{event.event_start_ts | date:'EEEE, MMMM d, y, h:mm:ss a zzzz':'GMT+05:30' }}
{{event.event_start_ts | date:'EEEE, MMMM d, y, h:mm:ss a zzzz'}}