【问题标题】:JavaScript : How do i convert "4/10/2016, 4:00:00PM" to 4 PM?JavaScript:如何将“2016 年 4 月 10 日,下午 4:00:00”转换为下午 4 点?
【发布时间】:2016-03-03 23:58:27
【问题描述】:

如何在 JavaScript 中将“2016 年 4 月 10 日,下午 4:00:00”转换为下午 4 点?我需要使用子字符串还是我们有任何日期方法来进行此转换?请多多指教。

JSFiddle : https://goo.gl/rppCaq

【问题讨论】:

  • s[0]+s.slice(-2) ?
  • 你能详细说明一下代码吗?
  • 字符串方法是首选,因为无论如何您都必须解析字符串以获取日期,然后调用方法来格式化输出。您不妨将字符串解析为您想要的格式并跳过日期。
  • 为什么要使用 goo.gl 链接到 jsfiddle?

标签: javascript date datetime datetime-format datetimeoffset


【解决方案1】:

尝试使用String.prototype.match()RegExp /(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g 来匹配数字,然后是":",然后是数字,然后是":",然后是数字,或者"A""Z",然后是输入结束; Array.prototype.join() 以空格字符 " " 作为参数

var date = "4/10/2016, 4:00:00PM";
var res = date.match(/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g);
document.body.textContent = res.join(" ");

【讨论】:

  • 抱歉,这不适用于 Internet Explorer 11 :(
  • @user5970552 “这在 Internet Explorer 11 上不起作用”你能描述一下“不起作用”吗?
  • 您提供的同一段代码在 Firefox 上运行良好,但在 IE11 上运行良好
  • 将调试并在一段时间后通知您
  • date.match 句子只是给下午而不是下午 4 点。但是相同的代码在 Windows 10 IE11 上运行良好,但在 Windows 7 IE11 上运行不正常 :(
【解决方案2】:

由于您有一个自定义字符串作为日期,请尝试以下操作。它不是很漂亮,但可以完成这个场景的工作。

var timeArr = "4/10/2016, 4:00:00PM".split(', ')[1].split(':');

var hr = timeArr[0];
var min = timeArr[1];
var sec = timeArr[2].match(/\d/g).join('');
var ampm = timeArr[2].replace(sec, '');

console.log(hr, min, sec, ampm );

【讨论】:

    【解决方案3】:

    与其他答案一样,只是弄乱字符串:

    function getHours(s) {
      var b = (s.split(' ')[1] || '').match(/\d+|[a-z]+/ig) || [];
      return /^\d+$/.test(b[0]) && /^[a-z]/i.test(b[3])? b[0] + ' ' + b[3] : 'can\'t parse that...';
    }
    
    document.write(getHours('4/10/2016, 4:00:00PM'));
    document.write('<br>' + getHours('parse this'));

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多