代码之家  ›  专栏  ›  技术社区  ›  Hema Nandagopal

使用regex转换时间戳

  •  2
  • Hema Nandagopal  · 技术社区  · 7 年前

    我有一个从utc到本地的转换时间戳,如下所示

    2018-02-03T06:30:00.000Z。我只需要显示06:30的回复。我尝试使用regex,但没有成功。有什么方法可以转换它吗?

    5 回复  |  直到 7 年前
        1
  •  1
  •   Ankit Agarwal    7 年前

    你不需要 regex 强制在这里。您可以使用自己的自定义逻辑,如下所示:

    var timeSt = '2018-02-03T06:30:00.000Z'
    //split it using 'T' and get the second value of array
    var arr = timeSt.split('T')[1];
    //get the substring
    var res = arr.substr(0,5);
    console.log(res);
        2
  •  0
  •   Aniket Sahrawat    7 年前

    Regex是一个错误的工具。您应该将字符串转换为日期并调用 getUTCHours ,则, getUTCMinutes 以获得正确的输出。

    var date = new Date("2018-02-03T06:30:00.000Z");
    console.log(date.getUTCHours() + ":" + date.getUTCMinutes());

    使用格式:

    var date = new Date("2018-02-03T06:30:00.000Z");
    console.log(('0' + date.getUTCHours()).slice(-2) + ":" +  ('0' + date.getUTCMinutes()).slice(-2));
        3
  •  0
  •   K.Dᴀᴠɪs    7 年前

    我同意这里的其他回答。Regex是不必要的,但由于您需要它,所以可以捕获并用捕获组替换字符串 $1

    (\d\d:\d\d)
    

    DEMO

        4
  •  0
  •   trincot Jakube    7 年前

    您可以使用 String#match 像这样:

    const date = "2018-02-03T06:30:00.000Z";
    const [timepart] = date.match(/\d+:\d+/) || [];
    console.log(timepart);
        5
  •  0
  •   Isaac Han    7 年前

    您可以简单地使用 moment.js

    有一个小问题。您想将UTC转换为本地时间,但字符串仍表示UTC时间。最后一个“Z”表示“零小时偏移”。如果“Z”是无效标记,并且时间实际上是本地的,则可以使用删除最后一个“Z” slice(0, -1) 。您可以检查ISO 8601数据元素和交换格式 https://en.wikipedia.org/wiki/ISO_8601 进一步了解格式。

    var moment = require('moment');
    console.log( moment( '2018-02-03T06:30:00.000Z'.slice(0, -1) ).format('HH:MM') );
    

    如果最后一个“Z”字符确实有效,并且您仍然需要将UTC 06:30转换为当地时间,只需删除 slice

    console.log( moment('2018-02-03T06:30:00.000Z').format('HH:MM') );
    

    这将打印转换后的本地时间。 片刻js公司 可以简化日期和时间操作。检查 https://momentjs.com 对于文档。

    如果使用节点。js公司

    $ npm install moment
    

    安装力矩。js节点模块。