如何将这些字符串解析为UTC日期?
问题描述:
我刮一个站点,日期有两种形式:如何将这些字符串解析为UTC日期?
11-22-2011 07:41 AM
Today @ 07:41 AM
这两者都是GMT-8。我希望得到一个unix时间戳,以便我可以构建一个有意义的日期对象
任何想法这可能是什么时区?大约一个月前,该网站被格林尼治标准时间9次。 JavaScript可以自动处理夏令时?
我很难解析它们。部分问题在于时区。
目前,我使用Date.js' parseExact
:
date = Date.parseExact(date + ' PDT', 'MM-dd-yyyy H:mm tt zzz');
Hovever,这似乎得到解析12AM为12:00
,不0:00
。另外,关于如何处理从today @
开始的问题,我一直处于完全丧失状态。
答
小时使用小写字母h
得到1-12。大写H
给出0-23。从你的例子,我会用的
MM-dd-yyyy hh:mm tt
你应该处理的格式“今天@”分开。当您找到该字符串时,请期待下一个令牌为hh:mm tt
形式的时间。将第二部分解析为时间,并将其与今天(当地)的日期结合起来。用Date.js函数编程并不难,但是您不会找到捕获“Today @”部分的单个格式字符串(如您所知)。
答
当我尝试使用交互式分析器http://www.datejs.com/的两个示例时,我会得到预期的结果。
有问题的时区可能是“美国西海岸”,又名“太平洋时间”。
不幸的是,这意味着在一年的不同时间不同的事情。在春夏两季,时区被称为“PDT”(GMT-0700),其余时间被称为“PST”(GMT-0800)。
使事情变得更加复杂的是,这些变化的日期与其他区域(例如欧洲)变化的日期不同。
我不认为有一种方法可以为Date.js指定一个时区值,并可以自动考虑这个值。
答
你可以编写自己的时区感知日期解析逻辑,它考虑到远程服务器的时区。
伪代码:
if date starts with "Today @"
replace "Today @" with currentDateInRemoteTimezone in date
endif
parse_timezone-aware(date)
“上午12点” 是不明确;见http://en.wikipedia.org/wiki/Midnight – geoffspear
@Wooble:我意识到。但是,当我收到上午12点时,我知道它应该在同一天早上被解释为'0:00' – Eric
我不认为这个问题值得反对。这是一个完全合理的问题。 – LuxuryMode