当前位置: 首页 > 知识库问答 >
问题:

Moment.js转换为日期对象

劳和雅
2023-03-14

使用Moment.js我无法将正确的矩对象转换为具有时区的日期对象。我找不到正确的日期。

例子:

var oldDate = new Date(),
    momentObj = moment(oldDate).tz("MST7MDT"),
    newDate = momentObj.toDate();
console.log("start date " + oldDate)
console.log("Format from moment with offset " + momentObj.format())
console.log("Format from moment without offset " + momentObj.utc().format())
console.log("(Date object) Time with offset " + newDate)
console.log("(Date object) Time without offset "+ moment.utc(newDate).toDate())

共有3个答案

壤驷麒
2023-03-14

.toDate对我来说并不奏效,因此,我所做的如下:

futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))

希望这有帮助

姬弘文
2023-03-14

只要您已经用所需区域的数据初始化了矩时区,您的代码就可以正常工作。

您正在正确地将该时刻转换为时区,这反映在从MomObj.format()输出的第二行中。

切换到UTC不仅会删除偏移量,还会更改回UTC时区。如果要这样做,则根本不需要原始的.tz()调用。您只需执行矩.utc()

也许您只是想更改输出格式字符串?如果是这样,只需指定格式化方法所需的参数

momentObj.format("YYYY-MM-DD HH:mm:ss")

关于代码的最后一行——当您使用toDate()返回到Date对象时,您放弃了moment.js的行为,回到了JavaScript的行为。JavaScriptDate对象将始终打印在其运行的计算机的本地时区中。moment.js对此无能为力。

其他一些小事:

>

  • 虽然构造函数可以使用日期,但通常最好不要使用日期。对于“现在”,不要使用moment(newdate())。相反,只需使用moment()。这两种方法都可以,但都是多余的。如果您是从字符串进行解析,请将该字符串直接传递到矩。不要先尝试将其解析为日期。您会发现moment的解析器更加可靠。

    MST7MDT这样的时区是出于向后兼容的原因。它们来自POSIX风格的时区,只有少数时区位于TZDB数据中。除非绝对必要,您应该使用一个键,如America/Denver

  • 章子航
    2023-03-14

    使用此选项将力矩对象转换为日期对象:

    从…起http://momentjs.com/docs/#/displaying/as-javascript日期/

    moment().toDate();
    

    产量:

    Tue Nov 04 2014 14:04:01 GMT-0600 (CST)
    
     类似资料:
    • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢

    • 问题内容: 在Android中,每个事件的日期(例如生日和纪念日)都以String格式保存,例如“ 2011-12-24”。 至少我的手机是这种情况。如果某些其他电话的日历与公历不同,则可能以其他格式存储这些日期。 即使对于带有公历日历设置的电话,也存在带小时和分钟且不带日期和日期的日期字符串。当我查询联系人表中的事件时,得到这样的日期字符串: 结果是(例如): “ 2011-12-14”或“ 2

    • 问题内容: 我陷入了一个问题,将不胜感激。我已经阅读了很多讨论,但它们似乎对我没有用。 如何将其转换为日期对象?我要这样做的原因是因为我想在google图表指令中使用它,其中列之一必须是日期。我不想将列类型设置为字符串: 例如: 问题答案: 这是我在控制器上所做的 我最终将日期格式化为所需的指令格式,如下所示。 这使我在图表的x轴上以dd / MM / yyyy(26/04/2002)的格式输入日

    • 问题内容: 我的json 响应 包含一个 CreatedOn 日期: 我需要将 CreatedOn 转换为简单的日期格式,并 计算从CreatedOn日期到当前日期的差异天数。 当我调试下面的代码字符串 CreatedOn时 显示一个空值。怎么会? 问题答案: 要么 考虑使用JSON方法而不是包含。JSON具有“ has()”,用于验证密钥是否存在。 您还应该确保首先尝试{}捕获{}字符串,以确保

    • 我有一个熊猫列,其中包含时间数据和列数据类型是对象。 如何将列转换为Datatime

    • 问题内容: 我有一个创建日期或对象的日期的表示形式。我已经通过看和,但没有发现任何可以比创建我自己的丑陋的解析方法做其他。我知道一定有办法,有人知道解决方案吗? 问题答案: 简单来说: 有关更多信息,请参见。 并将其转换为,请执行以下操作: