转换' 18/10/2016 10:31:22 PM'格式化为' 18/10/2016 22:31:22' javascript中的时间格式

时间:2016-10-20 10:49:25

标签: javascript



var now = new Date('18/10/2016 10:31:22PM');
var time = now.toLocaleTimeString();

alert(time);




此函数提供输出无效日期。我想转换这个" 18/10/2016 22:31:22"格式。给我一个适当的例子作为解决方案。

2 个答案:

答案 0 :(得分:0)

此功能适用于您的日期格式

function convertDate(date_string){
var d = date_string.trim();
d = d.split(" ");
v = d[1].split(":")[0];
v = d[1].indexOf("PM")>-1 ? +v+12 : v;
d[1] = d[1].replace(d[1].split(":")[0],v);
d = d.join(" ").replace("PM","").replace("AM","");
return d;
}

console.log(convertDate("18/10/2016 10:31:22PM"));
console.log(convertDate("01/10/2016 09:31:22PM"));
console.log(convertDate("06/10/2016 2:31:22AM"));
console.log(convertDate("07/10/2016 7:31:22AM"));

答案 1 :(得分:0)

如果不使用库,则需要提取所有日期标记,并以正确的顺序将它们发送到新的日期对象。从那里,您可以创建自己的日期格式化功能。



var DATE_FORMAT = /(\d{1,2})\/(\d{1,2})\/(\d{4}) (\d{1,2}):(\d{2}):(\d{2})([AP]M)/;
var dateStr = '18/10/2016 10:31:22PM';
var now = parseDateString(dateStr, DATE_FORMAT, function(tokens) {
  return [
    parseInt(tokens[3], 10),                  // year
    parseInt(tokens[2], 10) - 1,              // month
    parseInt(tokens[1], 10),                  // date
    to24(parseInt(tokens[4], 10), tokens[7]), // hours, meridiem
    parseInt(tokens[5], 10),                  // minutes
    parseInt(tokens[6], 10),                  // seconds
    0                                         // milliseconds
  ];
});
document.body.innerHTML = formateDate(now);

function parseDateString(dateStr, dateFormat, func) {
  var tokens = dateStr.match(dateFormat);
  var args = Array.prototype.concat.apply([null], func(tokens));
  return new (Function.prototype.bind.apply(Date, args));
}
function formateDate(date, dateSeparator) {
  return [
    pad2(date.getDate()),
    pad2(date.getMonth() + 1),
    date.getFullYear()
  ].join(dateSeparator || '/') + ' ' + [
    pad2(date.getHours()),
    pad2(date.getMinutes()),
    pad2(date.getSeconds())
  ].join(':');
}
function pad2(str) { return ('00' + str).substr(-2); }
function to24(hours, meridiem) {
  switch (meridiem) {
    case 'PM': if (hours < 12) return hours + 12;
    case 'AM': if (hours === 12) return hours - 12;
    default: return hours;
  }
}
&#13;
&#13;
&#13;

当然,这可以在一行中完成。

&#13;
&#13;
var dateStr = '18/10/2016 10:31:22PM';
var time = moment(dateStr, 'DD/MM/YYYY hh:mm:ssA').format('DD/MM/YYYY HH:mm:ss');
document.body.innerHTML = time;
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>
&#13;
&#13;
&#13;