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


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

演示

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新