3

サイトをスクレイピングしていますが、日付は次の 2 つの形式で表示されます。

11-22-2011 07:41 AM
Today @ 07:41 AM

どちらもGMT-8です。意味のある日付オブジェクトを構築できるように、これらから UNIX タイムスタンプを取得したい

これがどのタイムゾーンであるか考えていますか?約 1 か月前、このサイトは GMT-9 回を更新していました。javascriptは夏時間を自動的に処理できますか?

それらを解析するのは非常に困難です。問題の一部はタイムゾーンです。

現時点では、Date.js を使用していますparseExact

date = Date.parseExact(date + ' PDT', 'MM-dd-yyyy H:mm tt zzz');

12:00ただし、これはではなくとして 12AM を解析するよう0:00です。さらに、で始まるものをどのように処理するかについて、私は完全に途方に暮れていtoday @ます。

4

4 に答える 4

1

http://www.datejs.com/のインタラクティブパーサーを使用して両方の例を試してみると、期待どおりの結果が得られます。

問題のタイムゾーンは、おそらく「米国西海岸」、別名「太平洋標準時」です。

残念ながら、それは一年のさまざまな時期にさまざまなことを意味します。春と夏には、そのタイムゾーンは「PDT」(GMT-0700)と呼ばれ、それ以外の時間帯は「PST」(GMT-0800)と呼ばれます。

さらに複雑なことに、その変更が行われる日付は、他のゾーン(ヨーロッパなど)が変更される日付と同じではありません。

タイムゾーンの値をDate.jsに指定して、それを自動的に考慮に入れる方法はないと思います。

于 2011-11-22T16:59:32.543 に答える
1

リモートサーバーのタイムゾーンを考慮した独自のタイムゾーン対応の日付解析ロジックを作成できます。

疑似コード:

if date starts with "Today @"
  replace "Today @" with currentDateInRemoteTimezone in date
endif

parse_timezone-aware(date)
于 2011-11-22T17:11:00.123 に答える
0

HHHH:mm zzz12:00 を取得するために加算しないのはなぜですか?

于 2011-11-22T16:55:53.557 に答える
0

h1 ~ 12 を取得するには、時間に小文字を使用します。大文字Hは 0 ~ 23 を表します。あなたの例から、私は次の形式を使用します

MM-dd-yyyy hh:mm tt

ドキュメンテーション

"Today @" は別に扱う必要があります。その文字列が見つかったら、次のトークンが の形式の時間になることを期待してhh:mm ttください。2 番目の部分を時刻として解析し、今日の (ローカル) 日付と結合します。これは、Date.js 関数を使用してプログラムで行うのは難しくありませんが、"Today @" の部分をキャプチャする単一のフォーマット文字列は見つかりません (ご存じのとおり)。

于 2011-11-22T16:58:39.300 に答える