【问题标题】:How to get days between without time from date string - TypeScript? [duplicate]如何从日期字符串中获取没有时间的天数 - TypeScript? [复制]
【发布时间】:2021-05-21 21:25:19
【问题描述】:

我想获取日期之间的差异,但是这种日期格式附带了时间和其他信息。 2021-04-05T19:12:33.000Z

我们如何消除所有其他时间,只得到年、月、日字段来找出天之间的差异?

又名 你如何转换 2021-04-05T19:12:33.000Z

只有年月日没有秒? 2021-04-05T00:00:00.000Z

或者只是得到

2021-04-05?或者任何其他格式来获得 2 天之间的差异而不考虑时间戳?

我正在考虑从字符串中提取年、月和日并将其设置为字段。 然后传入

const year = ("2021-04-05T19:12:33.000Z").substring(0,4)
const month .. etc

new Date('05/04/2021') 手动,但是有没有更好的方法从 2021-04-05T19:12:33.000Z 中提取月、日、年?然后找出天差?

谢谢!

【问题讨论】:

  • 您可以将日期对象彼此相减,然后将结果除以24 * 3600 * 1000。现在向下(或向上)取整以获得整数。

标签: javascript typescript date datetime


【解决方案1】:

要提取不同的部分,只需解析日期:

const dt = new Date("2021-04-05T19:12:33.000Z")

console.log(dt.getFullYear())
console.log(dt.getMonth() + 1) // js is stupid and 0 indexes the month
console.log(dt.getDate())

不过,要查找两个日期之间的天数,

const dt1 = new Date("2021-04-05T19:12:33.000Z")
const dt2 = new Date("2021-04-11T19:12:33.000Z")

dt1.setHours(0);
dt1.setMinutes(0);
dt1.setSeconds(0);
dt1.setMilliseconds(0);
dt2.setHours(0);
dt2.setMinutes(0);
dt2.setSeconds(0);
dt2.setMilliseconds(0);

console.log((dt2 - dt1) / (24 /* hours */ * 60 /* minutes */ * 60 /* seconds */ * 1000 /* milliseconds */))

【讨论】:

  • 非常感谢戴夫!我认为它与附加链接不同,因为这是将项目重置为 0 并使用获取日期而不是字符串操作
  • "2021-04-05T19:12:33.000Z" 解析为UTC,setHours等设置当地时间。所有时间部分都可以在一个电话中完成:dt1.setHours(0,0,0,0)。结果将不是一个整数天数,其中遵守夏令时并且日期范围跨越 DST 边界。
猜你喜欢
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 2021-02-02
相关资源
最近更新 更多