如何在javascript中正确计算这两个日期之间的分钟数?

brqmpdu1  于 2021-09-29  发布在  Java
关注(0)|答案(4)|浏览(386)

好的-我对javascript还是很陌生,请理解我并耐心等待。
我有一个脚本,它返回两个日期:一个来自文本文件,另一个是系统日期。这两个日期以以下格式显示:

Tue 29 Jun, 12:57 PM (from the text file) and 
Mon Jul 26 2021, 11:47:21 PM (from the system date).

当我尝试减去这两个日期时,我在控制台上得到以下输出:

我使用以下代码试图获得这两个日期之间的差异:

const diffInMilliseconds = Math.abs('computer_date' - 'slug_date');
console.log(diffInMilliseconds);

南是什么意思?在javascript中获得两个日期差的正确方法是什么?在减去日期之前,是否需要将日期转换为其他格式?

nom7f22z

nom7f22z1#

你的价值观周围有引号。引号告诉javascript将引号中的数据解释为字符串。您正在尝试减去两个字符串,如 "oranges" - "apples" . javascript不理解这一点,这就是为什么您会 NaN . NaN 代表不是一个数,是当你尝试做一些你不能做的数学运算时得到的结果,比如被零除,或者减去不能减去的东西。
要修复此问题,请删除引号:

const diffInMilliseconds = Math.abs(computer_date - slug_date);
uplii1fm

uplii1fm2#

最简单的方法是使用 Date.parse() :

var origin_unix = Date.parse('Tue 29 Jun, 12:57 PM');
var current_unix = Date.now();

console.log( "Difference in Milliseconds: " + (current_unix - origin_unix) );

不过,您可能需要从文本文件中再次检查该日期,因为没有年份。

uemypmqf

uemypmqf3#

首先使用math.abs()减去两个日期,得到以毫秒为单位的结果。将结果除以1000得到秒数,再除以60得到分钟数。

var a = new Date('Tue 29 june 2021, 12:57 PM')
var current = Date.now();
var diff = Math.abs(current - a);

var minutes = Math.floor((diff/1000)/60)
console.log(minutes);
yuvru6vn

yuvru6vn4#

试试这个,
nan代表“不是数字”,如果您尝试对数字以外的数据类型执行数学运算,通常会看到此错误。
文本文件指的是2001年,见下面的输出

var date1 = new Date('Tue 29 Jun, 12:57 PM');
var date2 = new Date(Date.now());
diffInMinutes = Math.abs(Number(date1.getTime()) - Number(date2.getTime()))/60000;

//output
10559347.2098
date1
Fri Jun 29 2001 12:57:00 GMT+0530 (India Standard Time)
date2
Tue Jul 27 2021 10:04:12 GMT+0530 (India Standard Time)

// If you are referring the date to 2021 from the text file, try this

var textFileDate = 'Tue 29 Jun, 12:57 PM';
var appendYear = textFileDate.replace(',', ' ' + new Date().getFullYear()+',');
var textFileDate = new Date(appendYear);
var sysDate = new Date(Date.now());
diffInMinutes = Math.abs(Number(textFileDate.getTime()) - Number(sysDate.getTime()))/60000;

//output

    40164.49135
    textFileDate
    Tue Jun 29 2021 12:57:00 GMT+0530 (India Standard Time)
    sysDate
    Tue Jul 27 2021 10:21:29 GMT+0530 (India Standard Time)

相关问题