我有一個AngularJS,我從後端服務調用中獲取日期值。我從後端收到的日期是一個字符串。例如。 「2017年4月13日」。當我嘗試在用戶界面上顯示此內容時,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 「等基於客戶的時區。因此,日期不會更改,並且用戶界面上不會顯示休息日。我怎樣才能在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));
或者我重構我以前使用你的使用情況,以工作的老功能,我們可以在這裏有點矯枉過正,但它的工作原理:
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
沒有,Moment.js不需要。我有同樣的問題,並決定使用$filter
更改日期的格式以便對javascript日期解析器以不同的方式解析它:
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. Javascript:如何將UTC日期轉換爲本地日期?
- 2. 在PostgreSQL中將日期轉換爲等效的BC日期
- 3. 如何將本地化日期轉換爲JavaScript中的標準日期?
- 4. 如何將oData中的日期轉換爲JavaScript中的日期?
- 5. 如何將UTC日期轉換爲本地日期對象?
- 6. 將日期存儲爲數字,並將日期轉換回日期等效
- 7. 將Julian日期轉換爲日期javascript中的日期
- 8. 如何將vb.net中的日期轉換爲JavaScript日期?
- 9. javascript日期轉換日期無效
- 10. 將等式/ GMT日期轉換爲PHP中的本地地址
- 11. 將任何日期轉換爲本地日期問題
- 12. 如何在JavaScript中將短日期轉換爲長日期?
- 13. 在JavaScript中將iso8601日期轉換爲基本日期格式?
- 14. 將GMT +日期轉換爲android的本地日期
- 15. 如何將德國的日期轉換爲sql中的本地日期?
- 16. Javascript如何將sstring轉換爲日期
- 17. 如何將字符串轉換爲javascript中的有效日期
- 18. 如何將無效日期轉換爲SQL中的有效日期
- 19. 如何將solr日期轉換爲javascript日期?
- 20. 如何將gwt日期轉換爲javascript日期?
- 21. 如何將字符串日期轉換爲日期javascript?
- 22. 如何將日期日期轉換爲英文日期格式?
- 23. 將GMT日期字符串轉換爲本地日期對象
- 24. 將特定日期轉換爲本地短日期格式
- 25. 轉換戳日期爲JavaScript日期
- 26. 將美國日期(文本)轉換爲歐洲日期(日期)的Excel轉換
- 27. 如何將日期轉換爲文本
- 28. 如何將文本轉換爲日期?
- 29. 如何將長期轉換爲日期?
- 30. 將日期字符串轉換爲Javascript中的日期對象