Javascript 获取日期数组的时间戳值
我有一个日期数组,它的日期时间值一直到微秒 所以我的问题是,如何将这些值转换为时间戳值,例如整数或浮点数形式的值 如下所示:Javascript 获取日期数组的时间戳值,javascript,arrays,datetime,Javascript,Arrays,Datetime,我有一个日期数组,它的日期时间值一直到微秒 所以我的问题是,如何将这些值转换为时间戳值,例如整数或浮点数形式的值 如下所示: 1578032412798 这里我有如下日期数组: var dates =["2020-14-03 11:14:48.225000","2020-14-03 11:14:48.225000","2020-14-03 11:14:48.226000","2020-14-03 11:14:48.226000","2020-14-03 11:14:48.227000","20
1578032412798
这里我有如下日期数组:
var dates =["2020-14-03 11:14:48.225000","2020-14-03 11:14:48.225000","2020-14-03 11:14:48.226000","2020-14-03 11:14:48.226000","2020-14-03 11:14:48.227000","2020-14-03 11:14:48.227000","2020-14-03 11:14:48.228000","2020-14-03 11:14:48.228000","2020-14-03 11:14:48.228000","2020-14-03 11:14:48.229000","2020-14-03 11:14:48.229000","2020-14-03 11:14:48.229000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.232000"] ;
我正在尝试以下代码。但它不起作用:
dates.forEach((e) => {
var date = e.getTime();
console.log (date)});
我还尝试实现以下mwthod。但它只在小时前显示值:
var dateString = dates,
dateTimeParts = dateString.split(' '),
timeParts = dateTimeParts[1].split(':'),
dateParts = dateTimeParts[0].split('-'),
date;
x = new Date(dateParts[2], parseInt(dateParts[1], 10) - 1, dateParts[0], timeParts[0], timeParts[1]);
mainval = x.getTime();
您可以使用.map()
和.split()
重新格式化日期。首先.split()
按空格获取日期,然后.split()
按-
获取日期组件。然后,您可以翻转日期和月份,并将其连接回datetime字符串。使用new Date()
,然后可以从重新格式化的日期字符串中获取时间戳:
const dates=[“2020-14-03 11:14:48.225000”,“2020-14-03 11:14:48.225000”,“2020-14-03 11:14:48.226000”,“2020-14-03 11:14.226000”,“2020-14-03 11:14:48.227000”,“2020-14-03 11:14:48.227000”,“2020-14-03 11:14:48.228000”,“2020-14-03 11:14:14:48.228000”,“2020-14-03 11:14:14:14:14:48.228000”,“2020-14-03 11:14:14:22:9000”,“2020-14-03 11:22:9000”,"2020-14-03 11:14:48.229000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.230000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.231000","2020-14-03 11:14:48.232000"];
const res=dates.map(date\u str=>{
常数[日期,剩余]=日期分割(“”);
常数[y,d,m]=日期分割('-');
return+新日期([[y,m,d])。join('-',rest]。join('');
});
console.log(res);
请不要使用var
关键字。请改用const
和let
以下代码应该适合您的用例,至少如果您提供的所有日期都采用相同的格式(yyyy-dd-mm hh:mm:ss:SSSS
):
const timestamps=dates.map(e=>{
常数年=e.子串(0,4);
常数天=e.子串(5,7);
常量月=e.子串(8,10);
常数小时=e.子串(11,13);
常数分钟=e.子串(14,16);
常数秒=e.子串(17,19);
常数毫秒=e.子串(20);
返回新日期(年、月、日、小时、分钟、秒、毫秒);
});
它不像使用正则表达式那样花哨,但可读性更高。您可以使用正则表达式提取日期的年、月和日部分,然后按照正确的顺序从重构字符串中创建新的日期:
var日期=[
"2020-14-03 11:14:48.225000",
"2020-14-03 11:14:48.225000",
"2020-14-03 11:14:48.226000",
"2020-14-03 11:14:48.226000",
"2020-14-03 11:14:48.227000",
"2020-14-03 11:14:48.227000",
"2020-14-03 11:14:48.228000",
"2020-14-03 11:14:48.228000",
"2020-14-03 11:14:48.228000",
"2020-14-03 11:14:48.229000",
"2020-14-03 11:14:48.229000",
"2020-14-03 11:14:48.229000",
"2020-14-03 11:14:48.230000",
"2020-14-03 11:14:48.230000",
"2020-14-03 11:14:48.230000",
"2020-14-03 11:14:48.231000",
"2020-14-03 11:14:48.231000",
"2020-14-03 11:14:48.231000",
"2020-14-03 11:14:48.231000",
"2020-14-03 11:14:48.232000"
];
res=日期。映射(d=>{
m=d.match(/^(\d+)-(\d+)-(\d+)-(\d+)(.*)/);
返回新日期(`${m[1]}-${m[3]}-${m[2]}${m[4]}`);
});
console.log(res);
将日期对象本身存储在数组中,而不是将日期存储为字符串。如果将日期对象推入数组中,提取毫秒将非常有用,并且可以使用与日期对象相关的所有函数。为什么日期数组中有14
?12是日期值而不是月份yy dd mm@Kaushikdo expect时间戳数组是您的结果吗?是的。有点像@NickParsons。只想将datetime数组转换为时间戳它是否也包含微秒值?是的,它考虑到了这一点。正如您所看到的,除了微秒之外,您的所有日期都完全相同。如果它不包含微秒,则所有时间戳都是w应该是一样的,但它们是不同的