通过操作字符串将时间转换为 12 小时

convert time to to 12 hour by manipulate string

"2015-06-23 14:00:00"

我尝试将以上日期时间格式化为 12 小时制,但卡在某个地方。

function formatDate(raw_date){
    var right = raw_date.substring(10, 0);

    var hours = ((right[0].substring(2,0) + 11) % 12 + 1);
    var min = raw_date.substring(14,16);
    var suffix = right[1] >= 12 ? "PM":"AM";
    right[1] = ((right[1] + 11) % 12 + 1) + suffix;
    return hours + ':' + min + ' ' + suffix;
}

有人可以帮忙吗?我想要的输出是 "23/06/2015 02:00 PM"

试试这个:

function formatDate(raw_date) {
    var right = new Date(raw_date);

    var currentHours = right.getHours();
    var timeOfDay = (currentHours < 12) ? "AM" : "PM";
    if (currentHours > 12) {
        currentHours -= 12;
    }
    return (right.getDate() + '/' + right.getMonth()+ '/' + right.getFullYear() +" "+ currentHours+ ":"+right.getMinutes() + timeOfDay);
}

alert(formatDate("2015-06-23 14:00:00"));

Demo

您应该遵循一个简单的流程。 尝试分解输入 -> 转换它们 _> 然后总结它们:

function formatDate(raw_date){
    var right = raw_date.substring(0, 10);

    var year=right.substring(0,4);
    var month=right.substring(5,7);
    var day=right.substring(8,10);

    right=day+"/"+month+"/"+year;

    var left=raw_date.substring(11, raw_date.length);

    var hours = left.substring(0,2);
    var suffix = hours >= 12 ? "PM":"AM";
    hours=hours-12;
    if(hours<10) hours='0'+hours;

    var min = left.substring(3,5);

    left=hours+":"+min+" "+suffix;

    return right + ' ' + left;

}

基于您的代码的解决方案:

function formatDate(raw_date){
    var year = raw_date.substring(0,4);
    var month = raw_date.substring(5,7);
    var day = raw_date.substring(8,10); 
    var right = raw_date.substring(10);
    var hours = ((right.substring(0,3))% 12 );
    var min = raw_date.substring(14,16);
    var suffix = right.substring(0,3) >= 12 ? "PM":"AM";
    return day + "/"+month+"/"+year+" "+hours + ':' + min + ' ' + suffix;
}