【问题标题】:Is it a day in the current week? Moment JS是本周的某一天吗?时刻JS
【发布时间】:2020-03-30 21:10:57
【问题描述】:

我有一个问题。你能告诉我如何检查本周的一天吗?

我正在开发一些天气预报服务。我有当前日期,但必须检查在当前一周内是否完成。我只知道我必须使用 Moment JS 中的“isSame”函数。 这是我的代码行。

 if(this.conversation.payload.grain==="week" && moment().startOf('week').isSame(this.conversation.payload.forecastTime))

“forecastTime”是当前日期。但是条件不好,没有进入if循环。

谢谢!

【问题讨论】:

  • 你对“当前周”的定义是什么?
  • 本周的开始是moment().startOf('week'),看来你得到了那部分。一周的结束是加上 7 天。所以现在检查传入的日期是否大于或等于一周的开始,也小于一周的最后一天。

标签: javascript typescript momentjs is-same


【解决方案1】:

这是假设您的 forecastedDate 是实际的 javascript 日期或时刻对象。

isSame 函数还接受粒度参数。

只需将 'week' 参数添加到 isSame 方法中,如下所示:

if(this.conversation.payload.grain==="week" &&
    moment().startOf("week").isSame(this.conversation.payload.forecastTime, "week"))

使用 momentjs 库可以轻松获取星期几。

这将根据语言环境为您提供一周中的某一天:

var dayOfWeek = moment(this.conversation.payload.forecastTime).weekday()

例如,如果语言环境使用星期一作为一周的第一天,则 0 = 星期一,6 = 星期日。请记住,您收到的值将根据当前语言环境而变化。

如果您不希望根据区域设置更改值,但始终希望接收周一至周日的值,请使用 isoWeekday():

var dayOfWeek = moment(this.conversation.payload.forecastTime).isoWeekday()

这会给你一个整数 1-7。 1 = 星期一,7 = 星期日。

因此,例如,如果上面的代码返回 4,您就会知道今天是星期四。

有关 weekday()、isoWeekday 和 day() 函数的更多详细信息,请查看momentjs docs

【讨论】:

  • 根据您的后续问题,我更新了我的答案,包括如何计算一周中的哪一天,以及一周还剩多少天。 momentjs 库非常健壮,并且可以使用许多函数来处理大多数情况。我鼓励你看看documentation,因为它非常详细,有很多例子。
猜你喜欢
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 2018-03-27
  • 2019-05-11
  • 2020-01-14
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多