Javascript 我可以用JS比较这两个日期吗? console.log(“201905300545\u 201905300555”{ 常数[开始,结束]=r.split(“”); 返回+结束-+开始; }; 控制台日志(范围(“201905300545_201905300555”)矩(t,“YYYYMMDDhhmm”); 设rng1=s1.split(“”).map(m); 设rng2=s2.split(“”).map(m); console.log(rng1[1].diff(rng1[0]){ 让[l,年,月,日,小时,分钟,…r]=date.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/); 返回新日期(年、月、日、小时、分钟); }); 让[d1,d2]=“201905300545”和“201905300555”。拆分(“U”)。映射(解析日期); 让[d3,d4]='201905300535_201905300545'。拆分('u905300545')。映射(解析日期); 控制台日志(d2-d1
我想知道第一个日期范围是否大于第二个日期范围Javascript 我可以用JS比较这两个日期吗? console.log(“201905300545\u 201905300555”{ 常数[开始,结束]=r.split(“”); 返回+结束-+开始; }; 控制台日志(范围(“201905300545_201905300555”)矩(t,“YYYYMMDDhhmm”); 设rng1=s1.split(“”).map(m); 设rng2=s2.split(“”).map(m); console.log(rng1[1].diff(rng1[0]){ 让[l,年,月,日,小时,分钟,…r]=date.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/); 返回新日期(年、月、日、小时、分钟); }); 让[d1,d2]=“201905300545”和“201905300555”。拆分(“U”)。映射(解析日期); 让[d3,d4]='201905300535_201905300545'。拆分('u905300545')。映射(解析日期); 控制台日志(d2-d1,javascript,Javascript,我想知道第一个日期范围是否大于第二个日期范围 UPD:我问这个问题是因为我的同事用一种非常简单的方式来比较这些日期。只有当日期采用这种格式(YYYY-MM-DD-HH-MM-SS)时,它才起作用,因此JS会按字母顺序对它们进行比较。首先,您必须获得它们所代表的范围(通过减去它们): const range=r=>{ 常数[开始,结束]=r.split(“”); 返回+结束-+开始; }; 控制台日志(范围(“201905300545_201905300555”)矩(t,“YYYYMMDDhhmm
UPD:我问这个问题是因为我的同事用一种非常简单的方式来比较这些日期。只有当日期采用这种格式(YYYY-MM-DD-HH-MM-SS)时,它才起作用,因此JS会按字母顺序对它们进行比较。首先,您必须获得它们所代表的范围(通过减去它们):
const range=r=>{
常数[开始,结束]=r.split(“”);
返回+结束-+开始;
};
控制台日志(范围(“201905300545_201905300555”)
您可以将日期解析为时刻
,然后使用时刻
的diff
功能来比较持续时间、日期、开始或结束或任何组合
对于给定的用例“开始日期在第二个开始日期之前,结束日期在第二个结束日期之前吗?”您的同事比较日期的方式可能是Javascript中最快的方式
让s1=“201905300545_201905300555”;
设s2=“201905300535_201905300545”;
设m=t=>矩(t,“YYYYMMDDhhmm”);
设rng1=s1.split(“”).map(m);
设rng2=s2.split(“”).map(m);
console.log(rng1[1].diff(rng1[0])
这里有一个只使用JavaScript的解决方案:
const range = r => {
const [start, end] = r.split("_");
return +end - +start;
};
console.log(range("201905300545_201905300555") < range("201905300535_201905300545"));
let parseDate=(日期=>{
让[l,年,月,日,小时,分钟,…r]=date.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/);
返回新日期(年、月、日、小时、分钟);
});
让[d1,d2]=“201905300545”和“201905300555”。拆分(“U”)。映射(解析日期);
让[d3,d4]='201905300535_201905300545'。拆分('u905300545')。映射(解析日期);
控制台日志(d2-d1
你所说的“更多”是什么意思?你是说日期范围开始得晚些吗?晚些时候结束?涵盖更长的时间?我的意思是日期晚于哪个日期?开始日期?结束日期?中间日期?您可以将字符串围绕\uu
拆分,以获得可行的日期。然后你可以随心所欲地使用它们。你可以尝试Date.parse()
,它通过一点格式设置将字符串转换为实际的JS日期对象,然后比较操作变得非常简单。@popHip你能举个例子说明它不起作用吗?在你的例子中,如果OP使用12小时时钟,上午5:00和下午5:00的表示方式相同。因此,对于您的函数,6:00pm-5:00am的范围将小于7:00am-5:00am(有什么问题)。顺便说一句,我没有否决你的答案,因为它符合OP的示例预期结果,但用字符串处理日期总是一个坏主意,每个高级语言都包含用于此的lib,使用它!如果OP使用12小时时钟,则没有可能的解决方案。@Jonaswillms是的,这里使用的格式不是真正明确的,这里,让rng2=s1.split(“”).map(m)代码>应该是让rng2=s2.split(“”).map(m)代码>
const range = r => {
const [start, end] = r.split("_");
return +end - +start;
};
console.log(range("201905300545_201905300555") < range("201905300535_201905300545"));
let parseDate = (date => {
let [l, year, month, day, hour, minute, ...r] = date.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/);
return new Date(year, month-1, day, hour, minute);
});
let [d1, d2] = '201905300545_201905300555'.split('_').map(parseDate);
let [d3, d4] = '201905300535_201905300545'.split('_').map(parseDate);
console.log(d2 - d1 < d4 - d3);