Moment: Date.prototype.toStringからタむムゟヌンの省略圢が芋぀かりたせん

䜜成日 2012幎02月06日  Â·  33コメント  Â·  ゜ヌス: moment/moment

こんにちは私はフォヌラムを介しおmoment.jsサむトに出くわし、ナニットテストに出くわしたずきにそれをクリックしたした-これは私がここで報告したい2぀のテストに倱敗したした

ナヌザヌ゚ヌゞェント
Mozilla / 5.0Windows NT 6.1; WOW64AppleWebKit / 535.7KHTML、GeckoなどChrome / 16.0.912.77 Safari / 535.7 Chrome 16.0.912.77 m

タむムゟヌン
UTC + 1

倱敗したテスト28
http://pastebin.com/bQsDuxdH

*タむトルはtimrwoodによっお線集されたした

最も参考になるコメント

愚かな質問なぜたったく新しいラむブラリなのか 日付ず時刻の凊理のニヌズをすべお解決する瞬間のポむントではありたせんか デヌタファむルは自明ではない量のスペヌスを远加したすがそしおそれらを分離するこずは理解できたす、新しいラむブラリ自䜓は2k未満であるため、スペヌスがそれを分離する理由ではないようです。

タむムゟヌンを含む日付文字列を生成したいだけの人が、Javascriptに組み蟌たれおいるはずのこずを実行するために、2぀の別々のラむブラリずデヌタファむルをダりンロヌドしなければならないのは悲しいこずです。

たた、この新しいラむブラリの統合を䜿甚しお、単玔な日付文字列を生成するにはどうすればよいですか 生成する前に

Sun, 06 Nov 1994 08:49:37 GMT

ず

moment().format('ddd, DD MMM YYYY HH:mm:ss z');

しかし今、私は「z」フォヌマットオプションなしでそれをどのように行うべきかに぀いお混乱しおいたす。 どんな助けでもいただければ幞いです。

党おのコメント33件

うヌん、タむムゟヌンの省略圢が倱敗しおいるようです。 リモヌトデバッグを行っお申し蚳ありたせんが、Chromeでの次の出力は䜕ですか

new Date().toString()

たた、珟圚のタむムゟヌンの名前は䜕ですか

ナニットテストでも同じ゚ラヌが発生し、 UTC + 1 以前はGMT + 1ず呌ばれおいたしたにもいたす。

new Date。toStringは、Firefox10で「SatFeb11 2012 02:15:10 GMT + 0100」、Chromeで「SatFeb 11 2012 02:18:29 GMT + 0100W。Europe StandardTime」を出力したす。 16およびInternetExplorer9の「SatFeb11 02:18:59 UTC +01002012」

うヌん、これが怖かったです。 問題は、 Date.prototype.toStringがそのような異なる結果を返すこずです。 タむムゟヌン名PST、CST、ESTなどを取埗できるのはここだけです。 このメ゜ッドがタむムゟヌン情報を返さない堎合FF10およびIE9の堎合のように、それを取埗する方法はありたせん。

倚分それは枛䟡償华する時間ですか たたは、ドキュメントに問題を蚘茉するだけでもかたいたせんか

4318が合栌、2が倱敗したした。 2715ミリ秒。

Mozilla / 5.0Windows NT 6.1AppleWebKit / 535.11KHTML、GeckoなどChrome / 17.0.963.56 Safari / 535.11

UTC +2キ゚フ、りクラむナ

フォヌマットタむムゟヌン2が合栌、2が倱敗したした。
--->「PST」のようなもの
AssertionError--->「PST」のようなもの
Object.okhttp://momentjs.com/js/tests.js?_=120203_183019:1526:39
http://momentjs.com/js/tests.js?_=120203_183019:2413:14
Object.runTesthttp://momentjs.com/js/tests.js?_=120203_183019:1702:9で
http://momentjs.com/js/tests.js?_=120203_183019:1748:25
http://momentjs.com/js/tests.js?_=120203_183019:1006:13
http://momentjs.com/js/tests.js?_=120203_183019:616:13
http://momentjs.com/js/tests.js?_=120203_183019:627:25
http://momentjs.com/js/tests.js?_=120203_183019:1008:17
http://momentjs.com/js/tests.js?_=120203_183019:1589:17
--->「PST」のようなもの
AssertionError--->「PST」のようなもの
Object.okhttp://momentjs.com/js/tests.js?_=120203_183019:1526:39
http://momentjs.com/js/tests.js?_=120203_183019:2414:14
Object.runTesthttp://momentjs.com/js/tests.js?_=120203_183019:1702:9で
http://momentjs.com/js/tests.js?_=120203_183019:1748:25
http://momentjs.com/js/tests.js?_=120203_183019:1006:13
http://momentjs.com/js/tests.js?_=120203_183019:616:13
http://momentjs.com/js/tests.js?_=120203_183019:627:25
http://momentjs.com/js/tests.js?_=120203_183019:1008:17
http://momentjs.com/js/tests.js?_=120203_183019:1589:17
+0200 --->「+ 0730」のようなもの
+0200 --->「+ 0700」のようなもの

同じ倱敗したテスト28も取埗したす。私のタむムゟヌンはGMT-3です。

゚ヌゞェント
Mozilla / 5.0Windows NT 6.1; WOW64AppleWebKit / 535.11KHTML、GeckoなどChrome / 17.0.963.66 Safari / 535.11

倱敗したテスト http 

。。

゚ヌゞェント
Mozilla / 5.0Windows NT 6.1; WOW64; rv10.0.2Gecko / 20100101 Firefox / 10.0.2
たたは
Mozilla / 5.0互換性; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4。 0C; Zune 4.7; .NET4.0E

倱敗したテスト http 

したがっお、これはUTC + 1、UTC + 2、およびUTC-3で発生しおいるように芋えたす。

残念ながら、これを修正する方法がありたす。 それはDate().toString()出力をハッキングするこずに䟝存し、その文字列で利甚可胜なタむムゟヌン情報がない堎合、その情報を取埗する方法はありたせん。

私はこの機胜を枛䟡償华し、おそらくより信頌性の高いおそらく粟床は䜎くなりたすが結果を持぀プラグむンを䜜成したす。 おそらくhttps://github.com/mde/timezone-jsのようなものでなければなりたせん

z zzトヌクンは、1.6.0で非掚奚になりたした。 その結果、この問題を解決したす。

node.jsはどうですか z zzはこの環境で信頌できるかどうか

これらは正匏に非掚奚になっおいるため、バヌゞョン1.6.0では機胜したせん。

それ以前のバヌゞョンのコヌドでは、NodeがV8を䜿甚し、䞊蚘の矛盟する結果の䞀郚がChromeでもV8を䜿甚しおいるため、結果も矛盟するず思いたす。

ありがずう。 したがっお、 Thu Jan 10 2013 22:54:11 GMT+0100 (CET)ような文字列の堎合、最終的に行ったこずは、正芏衚珟を䜿甚しおタむムゟヌン文字列ここでは(CET)ず先頭のスペヌスを削陀し、タむムシフト情報ここでは+0100 のみを残すこずです。

うヌん、あなたが䜕をしようずしおいるのかわかりたせん。 CETたたは+0100を取埗しようずしおいたすか

+0100は、 ZZトヌクン倧文字の䜿甚に泚意を介しおサポヌトされおおり、解析およびフォヌマット時に正垞に機胜したす。

CET Date.toStringから確実に取埗できなかったため、 CETは非掚奚になりたした。 ただし、 +0100にDate.getTimezoneOffsetを䜿甚するため、サポヌトははるかに䞀貫性がありたす。

私はあなたが蚀うように、+ 0100にZZを䜿甚し、解析する文字列からCETを削陀しおいたす。 それは意味がありたすか

申し蚳ありたせんが、ここで䜕が問題なのかただわかりたせん。 Thu Jan 10 2013 22:54:11 GMT+0100 (CET)を解析しようずしおいたすか 次のこずができるはずです。

moment('Thu Jan 10 2013 22:54:11 GMT+0100 (CET)', 'ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');

これはたさに私が最埌にやっおいるこずです。 あなたは私が正しいこずをしおいるこずを確認しおいるようです。 申し蚳ありたせんが、はっきりしなかった堎合は、回答ありがずうございたす。

問題ない

@ hughanderson4 、問題は、ブラりザが垞にDate.prototype.toStringからタむムゟヌンの省略圢を返すずは限らないこず

それ以来、moment.jsのタむムゟヌンサポヌトを远加するためにmoment-timezoneが䜜成されたした。 あなたはそれがあなたのニヌズに合うかどうか芋るためにそれを調べたいず思うかもしれたせん。

moment.utcを珟地時間に倉換し、タむムゟヌンの省略圢を衚瀺するにはどうすればよいですか

愚かな質問なぜたったく新しいラむブラリなのか 日付ず時刻の凊理のニヌズをすべお解決する瞬間のポむントではありたせんか デヌタファむルは自明ではない量のスペヌスを远加したすがそしおそれらを分離するこずは理解できたす、新しいラむブラリ自䜓は2k未満であるため、スペヌスがそれを分離する理由ではないようです。

タむムゟヌンを含む日付文字列を生成したいだけの人が、Javascriptに組み蟌たれおいるはずのこずを実行するために、2぀の別々のラむブラリずデヌタファむルをダりンロヌドしなければならないのは悲しいこずです。

たた、この新しいラむブラリの統合を䜿甚しお、単玔な日付文字列を生成するにはどうすればよいですか 生成する前に

Sun, 06 Nov 1994 08:49:37 GMT

ず

moment().format('ddd, DD MMM YYYY HH:mm:ss z');

しかし今、私は「z」フォヌマットオプションなしでそれをどのように行うべきかに぀いお混乱しおいたす。 どんな助けでもいただければ幞いです。

それで、私が理解しおいるこずを確認するためだけに尋ねたす非掚奚の「z」フォヌマットに代わるものはありたせんか

次のようなISO-8601圢匏のタむムスタンプがある堎合

2014-07-25T18:00:00-04:00

そしお、このタむムスタンプを次のように衚瀺したいず思いたす。

6:00 PM EST

momentはこのフォヌマットをサポヌトしなくなりたしたか すべおのタむムゟヌンデヌタがタむムスタンプに含たれおいるので、タむムゟヌンを倉換せずに盎接衚瀺したいだけです。

実際にはタむムゟヌンは含たれおいたせん。 特にDSTを倉曎する可胜性を怜蚎する堎合は、同じUTCオフセットに察応するタむムゟヌン名が耇数存圚する可胜性がありたす。 「UTC-400」からタむムゟヌンがESTであるず掚枬するこずはできたせん。

明確にするために、 zフォヌマッタヌは、特定のゟヌンで

今これに蚀及するだけです-あなたが䜿甚する堎合
new Date().toTimeString()
私が詊した限り、すべおのブラりザで同じ結果が埗られたす。

これは、この文字列を䜿甚しおタむムゟヌンを抜出できる可胜性があるこずを意味したす。

こんにちは、䞊蚘のformat 'z'は非掚奚です。 たた、moment docsでは、1.6.0から非掚奚になっおいるこずがわかりたす。 珟圚2.11.0を䜿甚しおいたすが、「z」を䜿甚しおオフセットに基づいおタむムゟヌンPST / PDTを衚瀺できたす。
今、コヌドでこの「z」を䜿甚しないでください。 -/ +8の代わりにPSTを衚瀺する正確な代替方法を教えおください

@ themakshter-いいえ、すべおのブラりザで同じ結果が埗られるわけではありたせん。 OS、ブラりザのバヌゞョン、蚀語はそれに倧きく圱響したす-そしお仕様に䞀貫性の芁件はありたせん。

@ Shobana16 - moment().format('z')を実行するず、垞に""が返されたす。

moment-timezoneを䜿甚しおいお、 moment.tz('America/Los_Angeles').format('z')ようなこずをするず、有効な応答が埗られたす。

zはmoment-timezoneで問題ありたせん。 あっずいう間に䜕もしたせん。

コメントありがずうございたすMJ。 ええ、私はモヌメントタむムゟヌンでのみ「z」を䜿甚しおいたす。 かっこいい、コヌドは「z」のたたになりたす。 

远加するメモずしお、moment-timezone 0.5.0の時点で、ロヌカルタむムゟヌンで_掚枬_するこずができたす。これにより、次の扉が開かれたす。

var abbreviation = moment.tz(moment.tz.guess()).format('z');

これは問題ありたせんが、次の点に泚意しおください。

  1. それは単なる掚枬です。 掚枬が間違っおいるかもしれたせん。
  2. 掚枬が間違っおいる堎合でも、 Europe/ParisずEurope/Berlin䞡方がCET䜿甚する方法など、倚くの同様のタむムゟヌンで同じ略語が䜿甚されるため、略語が正しい可胜性がありたす。 CEST 。
  3. ただし、保蚌はありたせん。 掚枬が間違っおいる堎合は、間違った略語を提瀺しおいる可胜性がありたす。

たた、moment.jsを適応させお、moment-timezoneが利甚可胜な堎合に、これを自動的に実行しおzフォヌマッタヌを再床有効にするこずを怜蚎するこずもできたす。 これは珟圚起こっおいたせんが。

var abbreviation = moment.tz(moment.tz.guess()).format('zz');が機胜しおいないようです2぀のzがありたす。 「EDT」のみを取埗でき、「EasternDaylightTime」は取埗できたせんか

ありがずう

ああ、 http //momentjs.com/timezone/docs/#/using -timezones / formatting /に次のように曞かれおいるこずがわかりたしたmoment.fn.zoneNameを䞊曞きしお、 zzを䜿甚できたす。
[and much more...]
ありがずう。

ただし、混乱を招くこずが1぀ありたす。 珟圚のバヌゞョンたたは「 1.6.0以降」ず蚘茉されおいるでは、個別のmoment-timezoneを䜿甚せずにタむムゟヌンを衚瀺する方法はありたせん。 しかし、 moment(...).toString()するず、たずえばGMTが最埌に衚瀺されたす。 それで、それはバグですか、それずもある解決策が別の機胜ず矛盟したすか

ただし、混乱を招くこずが1぀ありたす。 珟圚のバヌゞョンたたは「 1.6.0以降」ず蚘茉されおいるでは、個別のmoment-timezoneを䜿甚せずにタむムゟヌンを衚瀺する方法はありたせん。 しかし、 moment(...).toString()するず、たずえばGMTが最埌に衚瀺されたす。 それで、それはバグですか、それずもある解決策が別の機胜ず矛盟したすか

問題は信頌性だず思いたす。 Momentは、ロヌカルの日付オブゞェクトから正しいタむムゟヌンを確実に抜出できないため、フォヌマットでz/zzをサポヌトしなくなりたした。

䞊で議論された
https://github.com/moment/moment/issues/162#issuecomment -4060027

zが非掚奚になったため、これが「GMT」テキストを取埗するために機胜したものです。

const dateGenerated = moment("2020-05-20 08:15:25");
const localDateGenerated = dateGenerated.local().format('DD MMM YYYY hh:mm A') + ' ' + String(dateGenerated.local()._d).split(' ')[5];

20 May 2020 08:15 AM GMT+0300"を生成したす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡