React Native中FlatList如何将20230324213000转为正确DateTime?
问题解决:moment.js解析时间字符串返回错误日期
问题原因
直接将数字20230324213000传给moment时,moment会把它当作毫秒级时间戳解析,而非日期字符串,这就导致计算出的日期严重偏离预期。
解决方案
需要明确告诉moment待解析字符串的格式,步骤如下:
- 确保
event.Esd是字符串类型(如果是数字,先转成字符串) - 在调用moment时传入第二个参数,指定日期格式为
YYYYMMDDHHmmss
修改对应代码行:
// 原错误代码 {event.EpsL} {moment( event.Esd ).format('MMMM Do YYYY, h:mm:ss a')} // 修改后代码 {event.EpsL} {moment(event.Esd.toString(), 'YYYYMMDDHHmmss').format('MMMM Do YYYY, h:mm:ss a')}
如果event.Esd本身已经是字符串类型,可简化为:
{event.EpsL} {moment(event.Esd, 'YYYYMMDDHHmmss').format('MMMM Do YYYY, h:mm:ss a')}
说明
YYYYMMDDHHmmss对应event.Esd的结构:
YYYY:4位年份(2023)MM:2位月份(03)DD:2位日期(24)HH:2位小时(21,24小时制)mm:2位分钟(30)ss:2位秒数(00)
指定格式后,moment就能正确解析日期,输出你期望的March 24th 2023, 9:30:00 pm。
内容的提问来源于stack exchange,提问作者Tony Smith
相关产品推荐
相关产品推荐

