jquery 将HH:mm转换为js中的Date对象

rxztt3cl  于 2023-08-04  发布在  jQuery
关注(0)|答案(5)|浏览(114)

如果我有两个时间表示为字符串

14:10 and 19:02

字符串
如何转换为Date对象以获得减去值

var res = date1 - date2;


我试着用

var date = new Date.parseExact(myDateVar, "HH:mm");


我要
未捕获的类型错误:parseExact不是构造函数

gt0wga4j

gt0wga4j1#

您有几个选择:

第一个选项:

var date1 = new Date(null, null, null, 14, 10);
var date2 = new Date(null, null, null, 19, 02);

字符串
而且你会得到真实的的日期对象。

第二种选择:

var date1 = new Date('01/01/1970 14:10');
var date2 = new Date('01/01/1970 19:02');


你会得到同样的结果。

uklbhaso

uklbhaso2#

我不建议把日期和它们所有的古怪之处(时区、糟糕的API、夏令时、闰秒...)搞得乱七八糟。例如,如果你想计算"3:05" - "2:00",而你的脚本恰好在DST切换发生的那天运行,如果你不小心的话,你可能会得到像0:05这样的结果。
幸运的是,解析一个带有时间的字符串并将其转换为一个更容易进行数学运算的单位是相当容易的:

// Most error checking omitted for brevity
const text = "23:59";
const parsed = String(text).match(/^(?<minutes>\d+):(?<seconds>\d+)$/);
if (parsed !== null) {
  const minutes = parseInt(parsed.groups.minutes, 10);
  const seconds = parseInt(parsed.groups.seconds, 10);
  const totalSeconds = 60 * minutes + seconds;
  console.log(
    "Input: %s; Minutes: %d; Seconds: %d; Total seconds: %d",
    text, minutes, seconds, totalSeconds
  );
}

字符串
您可以通过计算然后减去相应的totalSeconds来计算两次之间的差值。如果你把它 Package 在一个自定义函数或对象中,你就有了一些可重用的东西。举例来说:

// Most error checking omitted for brevity
function toSeconds(text) {
  const parsed = String(text).match(/^(?<minutes>\d+):(?<seconds>\d+)$/);
  if (parsed === null) {
    return null;
  }
  return totalSeconds = 60 * parseInt(parsed.groups.minutes, 10) + parseInt(parsed.groups.seconds, 10);
}

function toMinutesSeconds(totalSeconds) {
  const minutes = Math.floor(totalSeconds / 60);
  const seconds = totalSeconds % 60;
  return String(minutes).padStart(2, "0") + ":" + String(seconds).padStart(2, "0");
}

const from = "14:10";
const to = "19:02";
const differenceInSeconds = toSeconds(to) - toSeconds(from);
console.log(
  "Total seconds: %s; MM:SS: %s",
  differenceInSeconds, toMinutesSeconds(differenceInSeconds)
);


还值得注意的是,与基于日期的解决方案不同,这种方法适用于任意持续时间(例如运行时间而不是一天中的时间)。

5lhxktic

5lhxktic3#

从我的头上:

var a="14:10";
var b="19:02";

var date1=new Date("01-01-2017 " + a + ":00");
var date2=new Date("01-01-2017 " + b + ":00");
//diff will be the number of milliseconds between the two times.
var diff = Math.abs(date1 - date2);
alert(diff);

字符串
当然这需要你在同样的24小时内完成。

ou6hu8tu

ou6hu8tu4#

首先转换这个:14:10 and 19:02至今

var
    pieces = "14:02".split(':')
    minute, second;

if(pieces.length === 2) {
    minute = parseInt(pieces[0], 10);
    second = parseInt(pieces[1], 10);
}

字符串
使用这个:

var date1 = new Date("7/13/2010");
var date2 = new Date("12/15/2010");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);

lh80um4z

lh80um4z5#

Date.parse in javascript
我认为newDate.parseExact是用C#编写的,所以JavaScript中没有构造函数;

相关问题