簡體   English   中英

Javascript轉換yyyy-mm-ddTHH:MM:SS到星期幾(MON)HH:MM AM / PM

[英]Javascript convert yyyy-mm-ddTHH:MM:SS to DAY of week (MON) HH:MM AM/PM

我有這樣的格式

2017-02-14T11:30:00

我要轉換為哪個

Fri Feb 14 11:30 PM     

是的,我不知道它是星期幾,所以我放入“星期五”然后PM可能應該是AM

使用Javascript我之前傳遞了完全不同的數據,因此這個功能需要更多修改

var getTravelDateFormatted = function () {
    // Example  Mon Jan 23 
    return function (str) {
        var daysNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
            monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],
            d = new Date(str),
            day = d.getDate(),
            month = monthNames[d.getMonth()],
            year = d.getFullYear().toString().substr(2, 2),
            dayName = daysNames[d.getDay()];

        //return day + '-' + month + '-' + year + ' (' + dayName + ')';
        return dayName + ' ' + month + ' ' + day;
    };
};

關於如何做到這一點的想法?

 var getTravelDateFormatted = function() { // Example Mon Jan 23 return function(str) { var daysNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'], d = new Date(str), day = d.getDate(), month = monthNames[d.getMonth()], year = d.getFullYear().toString().substr(2, 2), hours = d.getHours(), minutes = d.getMinutes(), dayName = daysNames[d.getDay()]; //return day + '-' + month + '-' + year + ' (' + dayName + ')'; return hours > 12 ? (dayName + ' ' + month + ' ' + day + ' ' + (hours - 12) + ":" + minutes + " PM"): (dayName + ' ' + month + ' ' + day + ' ' + hours + ":" + minutes + " AM"); }; }(); var formatedDate = getTravelDateFormatted('2017-02-14T11:30:00'); console.log(formatedDate); 

如果不了解有關格式化此日期的更多詳細信息,可以使用vanilla JS Date對象的toLocaleString方法快速完成此操作。 有很多選項可以讓你以你想要的方式輸出日期/時間值(可以在MDN上找到很多細節)。

所以,一旦你有了自己的價值,你就可以用它來做這樣的事:

function formatDate(dDate) {
    var oFormatOptions = {
        weekday: "short",
        month: "short",
        day: "numeric",
        hour: "numeric",
        minute: "numeric"
    };

    return dDate.toLocaleString("en-US", oFormatOptions);
}

現在,使用您原來的“2月14日上午11:30”示例,您的返回值將是: Tue, Feb 14, 11:30 AM 如果逗號不可接受,可以通過將最后一行更改為:

return dDate.toLocaleString("en-US", oFormatOptions).replace(/,/g, "");

這將導致您要求的價值: Tue Feb 14 11:30 AM

看看這個功能提供了什么。 有很多靈活性可以使用。

您不一定需要包含一周中的日期和月份的數組。

轉換為字符串時的日期對象實際上包含您需要的信息。 你可以這樣做:

/**
A date object will produce a string like this:
*"Tue Jan 10 2017 16:51:05 GMT-0500 (EST)"
* Maybe this is good enough?
*/

var myDateObj = new Date();
var dateParts = myDateObj.toString().split(' ');
var myDay = dateParts[0];
var myMonth = dateParts[1];
var myDate = dateParts[2];
var myHour = myDateObj.getHours();
var myMin = myDateObj.getMinutes();
var ampm = 'AM';

if (myHour > 11) {
    ampm = 'PM';

    if (myHour !== 12) {
        myHour = myHour - 12;
    }
}

var dateText = myDay + ' ' + myMonth + ' ' +  
    myDate + ' ' + myHour + ':' + myMin + ' ' + ampm;

console.log(dateText);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM