使用正则表达式转换时间戳

时间:2018-03-13 07:26:20

标签: javascript regex date

我有一个从utc转换为本地的时间戳,它看起来像下面的

2018-02-03T06:30:00.000Z。我只需要从响应中显示06:30。我尝试使用正则表达式,但没有运气。是否有任何解决方案可以转换它?

5 个答案:

答案 0 :(得分:1)

你在这里强制要求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);




答案 1 :(得分:0)

正则表达式是错误的工具。您应该将字符串转换为日期并调用getUTCHoursgetUTCMinutes以获取正确的输出。



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




答案 2 :(得分:0)

我同意这里的其他回答者。正则表达式是不必要的,但是因为你要求它,你可以捕获并用捕获组$1替换你的字符串

(\d\d:\d\d)

DEMO

答案 3 :(得分:0)

您可以像这样使用String#match



const date = "2018-02-03T06:30:00.000Z";
const [timepart] = date.match(/\d+:\d+/) || [];
console.log(timepart);




答案 4 :(得分:0)

只需使用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'字符确实是有效的,您仍然需要将06:30 UTC转换为当地时间,只需删除slice

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

这将打印转换后的当地时间。 moment.js可以简化您的日期和时间操作。查看https://momentjs.com了解文档。

如果您使用node.js

$ npm install moment

安装moment.js节点模块。