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

时间:2015-06-16 10:17:51

标签: javascript jquery datetime time

"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"

3 个答案:

答案 0 :(得分:4)

试试这个:

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

答案 1 :(得分:0)

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

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;

}

答案 2 :(得分:0)

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

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