我有一个从utc转换为本地的时间戳,它看起来像下面的
2018-02-03T06:30:00.000Z。我只需要从响应中显示06:30。我尝试使用正则表达式,但没有运气。是否有任何解决方案可以转换它?
答案 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)
正则表达式是错误的工具。您应该将字符串转换为日期并调用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));

答案 2 :(得分:0)
答案 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节点模块。