[英]Javascript Date toString convert and format to local time
我有一個腳本,該腳本以以下格式獲取日期/時間:
2017-06-15 21:00
然后將其轉換為本地時間,並顯示為:
Thu Jun 15 2017 17:00:00 GMT-0400 (Eastern Daylight Time)
腳本:
$(document).ready(function() {
$('.plg-date > .fabrikElement > div').each(function() {
var date = $(this).text();
var newdate = new Date(date + " UTC");
console.log(newdate);
$(this).text(newdate.toString());
})
})
我將如何格式化toString以便輸出是這樣的?
Thu Jun 15 2017 5:00:00 PM Eastern Daylight Time
您必須自己解析它。 有一些庫也可以做到這一點(Stack Overflow規則建議不要提出建議,但是如果您使用Google“ javascript日期格式庫”,會發現它們),但是如果您要使用純JavaScript來實現,我只需要自己構建字符串即可。
由於您已經在創建Date
對象,因此您已經完成了一半。
Date
對象只有數字,因此不會包含Thu
, Jun
和Eastern Daylight Time
類的字符串。 對於這些,您將需要列出可能的值並將其映射到它們(通常可以使用一個簡單的數組)。
對於5:00:00 PM
部分,可以MOD( %
12)小時,然后指定AM
如果hours < 12
或PM
如果hours >= 12
。
const time = (d.getHours() % 12) + ':' + d.getMinutes() + ':' + d.getSeconds() + (d.getHours() < 12 ? 'AM' : 'PM');
我不會提供完整的JavaScript,因為您應該自己動手編寫腳本。 如果您有任何麻煩,請再問一個問題。
您也可以使用toLocaleString()
組合,但是它不能滿足您的所有需求(例如,它不執行12小時日期格式)。
如果您可以使用外部庫,我建議使用momentjs使用此庫:
moment('2017-06-15 21:00').format('ddd MMM DD YYYY h:mm:ss A')
// => "Thu Jun 15 2017 9:00:00 PM"
使用@James建議使用toLocaleString()
$(document).ready(function() {
$('.plg-date > .fabrikElement > div').each(function() {
if($(this).text().length > 0) {
var date = $(this).text();
var newdate = new Date(date + " UTC");
var options = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
timeZoneName: 'short'
}
$(this).text(newdate.toLocaleString('en-US', options));
}
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.