【问题标题】:How to get last day of a given year with moment?如何用时刻获取给定年份的最后一天?
【发布时间】:2020-02-12 05:20:29
【问题描述】:

我可以硬编码一年中的最后一天,因为无论如何它总是 12 月 31 日。有很多解决方案使用datejsjquery。但我正在开发一个 Angular 项目,因此我的代码在 typescript 中。我的技术主管希望我使用moment 来执行此操作。我不应该硬编码任何日期。 moment 是否提供了任何内置方法来获取 given 年的最后一天。我说的是 given 年,因为在我的情况下 given 年是动态的。它可以随时改变。我正在使用endOf() 方法。我在自定义年份出现错误。我的意思是:

const lastDayOfYear = moment().endOf('year') 工作正常,但是:

const lastDayOfYear = moment().endOf(2025) 给我这个错误:

“2025”类型的参数不能分配给“StartOf”类型的参数

我也试过了:

  1. const lastDayOfYear = moment().endOf("2025");
  2. year=2025; const lastDayOfYear = moment().endOf(year);

这种方法将如何工作?我已经浏览了整个Moment docs。或者我应该坚持使用javascript的Date。像这样的:

new Date(new Date().getFullYear(), 11, 31);

请提供解决方案。

PS:我只想要MM-DD-YYYY 格式的给定年份的最后日期。

【问题讨论】:

  • const lastDayOfYear = moment().endOf('year') is working fine 你能告诉我们'year' 在这种情况下到底是什么
  • @bhaskar, year 本身是预先定义的常数,它始终指的是当前年份,即 2020 年。您还可以传递其他参数。例如。 “周”、“日”等
  • 不要认为这是可能的。因为 JS 中的常量不会作为字符串传递。鉴于下面的答案,我认为 endOf() 函数接受一个字符串参数,该参数定义您需要end of..的日期的哪一部分。

标签: javascript typescript momentjs


【解决方案1】:
moment(date).endOf('year');

其中 date 是那一年某处的日期。

【讨论】:

  • 给我 1 分钟。我会试试这个然后回到你身边。 :-)
  • 一个小请求。我尝试了这个解决方案,我得到了这个输出:Date is: 1609439399999。现在如何确认 2020 年 12 月 31 日?
  • 执行new Date(1609439399999),它将返回带有该日期的格式化日期对象。我查了一下,那个时间戳是 2020 年 12 月 31 日。
【解决方案2】:

如果你真的想用 moment 而不是使用 `12-31-${year}` 来解决这个问题,你可以使用:

moment([year]).endOf('year').format('MM-DD-YYYY')

【讨论】:

  • 如果year=2025,输出为:> 日期为:12-31-4045
  • 编辑@Tanzeel
  • 先生,这个解决方案奏效了。我只会用这个。你能解释一下吗,因为我必须证明我的技术负责人可能会提出交叉问题。希望你明白我的意思。 :-)
  • 不,先生,我不需要+1。所以我从那里删除了它。现在我准备好推送代码了。非常感谢。 :-)
  • 不用担心@Tanzeel!如果您需要证明,moment([year]) 将时间戳设置为给定年份,然后.endOf('year') 将其移动到年底,然后由.format('MM-DD-YYYY') 格式化
【解决方案3】:

立即设置当前日期new Date()

const now = moment(new Date()).endOf('year');
alert(now);

【讨论】:

  • 你的答案也是正确的,但是输出是1609439399999,而格式应该是MM-DD-YYYY。不管怎么说,还是要谢谢你。我感谢您的时间和努力。 :-)
  • 所以你可以使用这个moment(new Date()).endOf('year').format("MM-DD-YYYY")
猜你喜欢
  • 1970-01-01
  • 2014-11-21
  • 2019-05-03
  • 2011-11-24
  • 2020-08-02
  • 1970-01-01
  • 2017-12-04
  • 2017-10-29
  • 1970-01-01
相关资源
最近更新 更多