Javascript转换yyyy-mm-ddTHH:MM:SS到星期几(MON)HH:MM AM / PM

时间:2017-01-10 21:28:03

标签: javascript date datetime

我有这样的格式

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;
    };
};

关于如何做到这一点的想法?

3 个答案:

答案 0 :(得分:0)



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);




答案 1 :(得分:0)

如果不了解您尝试格式化此日期的详细信息,可以使用vanilla JS toLocaleString对象的Date方法快速完成此操作。有很多选项可以让您按照自己喜欢的方式输出日期/时间值(可以在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

查看该功能提供的功能。 。 。有很多灵活性可以使用。

答案 2 :(得分:0)

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

转换为字符串时的日期对象实际上包含您需要的信息。你可以这样做:

/**
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);
相关问题