私はバックエンドサービスコールから日付の値を取得するAngularJSを持っています。バックエンドから受け取った日付は文字列です。例えば。 "2017-04-13"。 UIでこれを表示しようとすると、JavaScriptが現地時間「2017-04-12 17:00:00 CST」に変換されています。これは、UIでこれが休日に表示されるためです。達成しようとしているのは、「2017-04-13 12:00:00 EST」または「2017-04-13 12:00:00 PST」または「2017-04-13 12:00:00 CSTクライアントのタイムゾーンに基づいて設定します。そのため、日付は変更されず、休みはUIに表示されません。どうすればJavascriptでこれを達成できますか?これを達成するにはMoment.jsとmoment-timezone.jsが必要ですか?JavaScriptでローカル日付と同等の日付に変換する方法
0
A
答えて
1
ローカルタイムゾーンのUTCからのオフセット時間を示すタイムゾーンオフセットを試すことができます。
let myDate = new Date('2017-04-13');
myDate = new Date(myDate.getTime() + (myDate.getTimeZoneOffset() * 60 * 1000));
代わりに私は、私はあなたのユースケースで作業する前に、それはここで少しやり過ぎかもしれ使用のだが、それが動作古い機能リファクタリング:いいえ、Moment.jsではありません
Date.prototype.format = function(format) {
var result = "";
format = format.replace("mm", this.getUTCMonth() + 1 < 10 ? "0" + (this.getUTCMonth() + 1) : this.getUTCMonth() + 1);
format = format.replace("m", this.getUTCMonth() + 1);
format = format.replace("dd", this.getUTCDate() < 10 ? "0" + this.getUTCDate() : this.getUTCDate());
format = format.replace("d", this.getUTCDate());
format = format.replace("yyyy", this.getUTCFullYear());
format = format.replace("yy", String(this.getUTCFullYear()).substring(String(this.getUTCFullYear()).length - 2));
format = format.replace("HH", this.getUTCHours() < 10 ? "0" + this.getUTCHours() : this.getUTCHours());
format = format.replace("H", this.getUTCHours());
format = format.replace("hh", this.getUTCHours() == 0 ? "12" : this.getUTCHours() < 10 ? "0" + this.getUTCHours() : this.getUTCHours());
format = format.replace("h", this.getUTCHours() == 0 ? "12" : this.getUTCHours());
format = format.replace("nn", this.getUTCMinutes() < 10 ? "0" + this.getUTCMinutes() : this.getUTCMinutes());
format = format.replace("n", this.getUTCMinutes());
format = format.replace("ss", this.getUTCSeconds() < 10 ? "0" + this.getUTCSeconds() : this.getUTCSeconds());
format = format.replace("s", this.getUTCSeconds());
format = format.replace("p", this.getUTCHours() >= 12 ? "PM" : "AM");
format = format.replace("t", new Date().toString().match(/\(([A-Za-z\s].*)\)/)[1]);
return format;
};
let myDate = new Date('2017-04-13');
myDate.format('yyyy-mm-dd HH:mm:ss t');
// Output -> 2017-04-13 00:00:00 EDT
1
を必須。私は同じ問題を持っていたとJavascriptの日付パーサは異なり、それを解析することができるように、日付の形式を変更する$filter
を使用することにしました:
var correctDate = new Date($filter('date')(backEndDate, 'MMMM d, yyyy'));
ので、代わりの解析:
new Date('2017-04-13') // Wed Apr 12 2017 19:00:00 GMT-0500 (Central Daylight Time)
あなたが解析しています:日付が正しくないとを見える理由については
new Date('April 13, 2017'); //Thu Apr 13 2017 00:00:00 GMT-0500 (Central Daylight Time)
1
、Why does Date.parse give incorrect resultsを設定します。その答えは、DateコンストラクタやDate.parseを使用して文字列を解析しない理由を示しています。
ISO 8601形式の日付をローカルとして確実に解析するには、単純な関数が必要です。また、次の例では値が検証され、月または日が範囲外の場合は無効な日付が返されます。あなたは時間が正午になりたい場合は、12
function parseISOLocal(s) {
var b = s.split(/\D/);
var d = new Date(b[0], --b[1], b[2]);
return d && d.getMonth() == b[1]? d : new Date(NaN);
}
var d = parseISOLocal('2017-04-13');
d.setHours(12);
console.log(d.toString());
関連する問題
- 1. 日付を日付から日付に変換する方法
- 2. データベースの日付をJavascriptで短い日付に変換する
- 3. solrの日付をjavascriptの日付に変換する方法は?
- 4. システム日付を日付形式に日付データ型に変換する方法
- 5. PHPの日付をjavascriptの日付形式に変換する
- 6. Spotfire Terr - 日付と日付の変換
- 7. GMT日付をローカル日付に転送する方法
- 8. UTCの日付をローカルの日付オブジェクトに変換するには?
- 9. 日付と日付をSQLの日付と時刻に変換する
- 10. 今日のmysqlと同等の最小日付と最小日付を取得する方法
- 11. 週番号をJavascriptで日付に変換する方法
- 12. JavaScriptで日付を変換する
- 13. UTCからローカル日付への変換
- 14. javascriptの日付を特定のタイムゾーンに変換する方法
- 15. PHP日付の選択日付と等しい日付:
- 16. Ionic:日付パイプとローカル日付
- 17. JavaScriptのローカル日付と時刻を指定する方法
- 18. JSON日付を現地時間でのOracle日付に変換する方法
- 19. AndroidのSQLite:長い日付と日付に変換する
- 20. GTMのカスタムJavascript変数日付(文字列)を日付に変換する
- 21. GWT java.util.Calendarと同等の日付
- 22. 無効な日付をSQLで有効な日付に変換する方法
- 23. タイムゾーンなしで日付文字列を日付オブジェクトに変換する方法
- 24. oracleで日付文字列を日付に変換する方法
- 25. PHPの日付形式をJavaScriptの日付形式に変換するには?
- 26. 文字列(hh:mm)を現在の日付の日付に変換する方法
- 27. UTCの日付時間をメキシコの日付時刻に変換する方法
- 28. OLEオートメーションの日付をSQLの日付に変換する方法
- 29. oracle10gの文字列の日付を日付形式に変換する方法
- 30. システム日付を書式付き日付に変換する