【问题标题】:How to get start and end date with momentjs?如何使用momentjs获取开始和结束日期?
【发布时间】:2015-11-09 17:46:34
【问题描述】:

我的日历开始日期是这样的:

var date_start = $('#calendar').fullCalendar('getView').start

.toDate() 我可以在 chrome 控制台中看到这个结果:

2015 年 11 月 9 日星期一 01:00:00 GMT+0100 (ora solare Europa occidentale)

我需要显示这个结果:

2015 年 11 月 9 日星期一 00:00:00

我也想得到一天的结束,应该是这样的:

2015 年 11 月 10 日星期二 00:00:00

我怎样才能达到这个结果?

【问题讨论】:

    标签: fullcalendar momentjs


    【解决方案1】:

    toDate 会返回一个 JavaScript Date 对象。因此,任何输出字符串都基于Date.toString 的具体实现。如果你想要特定的输出,你应该使用 moment 的format 函数来格式化。

    date_start.format("ddd MMM DD YYYY HH:mm:ss")
    

    但是,这将返回 01:00,而您请求的是 00:00。不清楚您是在询问当地的开始时间,还是在询问等效的 UTC 值。

    如果您想在当地开始一天:

    date_start.clone().startOf('day').format("ddd MMM DD YYYY HH:mm:ss")
    

    如果您想要等效的 UTC 值:

    date_start.clone().utc().format("ddd MMM DD YYYY HH:mm:ss")
    

    克隆很重要,因为时刻对象是可变的。如果您不克隆,那么您将操纵原始时刻,这可能会在 fullcalendar 中产生意想不到的副作用。您可以使用上面显示的 clone 函数,也可以将其包装在 moment 函数中,如 moment(date_start)... 两者都做同样的事情。

    对于结束值,看起来你想要第二天的开始,所以这样做:

    date_start.clone().startOf('day').add(1, 'day').format("ddd MMM DD YYYY HH:mm:ss")
    

    或者:

    date_start.clone().utc().add(1, 'day').format("ddd MMM DD YYYY HH:mm:ss")
    

    再次,选择与您的使用场景相对应的那个。

    仅供参考 - 您似乎要求的是 UTC,但在绝大多数情况下,在向用户显示诸如 fullcalendar 之类的日历时,当地时间更相关。

    【讨论】:

    • 只是一件事:.clone() return 不是一个函数,为什么?
    • 克隆返回一个新的时刻对象。你为什么期望它返回一个函数?
    • 一个问题:pastebin.com/Qm5Wyzsm 你怎么能看到返回 +0100 是否可以设置 +0000 或删除 gmt?
    • 如果您询问如何格式化字符串以包含偏移量,请使用ZZ(请read the docs)。总的来说,输出格式可以是'ddd, D MMM YYYY HH:mm:ss [GMT] ZZ'。此外,在您的 pastebin 中,您有大量不必要的代码。不要尝试格式化字符串只是为了再次解析它,在大多数情况下您可以完全避免使用Date 对象。
    • 您可以在答案中发布更新吗?日期不太好,谢谢支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多