我正在尝试将Dropbox API date format转换为第一天。在moment.js,
现在不能使用以下格式。
moment.utc("Sat, 21 Aug 2010 22:31:20 +0000")
如果在使用utc:
之前使用日期转换,它会以下列格式工作moment.utc(new Date("Sat, 21 Aug 2010 22:31:20 +0000"))
但是,我无法使用新的Date方法,因为它无法在其他一些情况下使用(字符串未标准化) - 相关的Stackoverflow问题。
一种可能的方法是配置Dropbox输入格式,有没有其他方法可以让moment.utc在不使用新Date方法的情况下工作?
非常感谢!
答案 0 :(得分:0)
var d = moment.utc("20100821", "YYYYMMDD");
var day = d.day(); // 6
var year = d.year(); // 2010
var month = d.month(); // 7
var date = d.date(); // 21
答案 1 :(得分:0)
Moments.js会对您的代码发出一个很大的弃用警告。问题的关键在于:如果您没有提供明确的日期格式,并且您的日期格式不是ISO 8061类似,则moment.js会放弃解析它并依赖于新的Date()而不是。这充其量是脆弱的。
解决方案很简单:您知道 Dropbox用于返回日期的格式。只需指定它,您的问题就解决了。像(实际格式可能需要一些调整)
var value = moment.utc("Sat, 21 Aug 2010 22:31:20 +0000", "ddd, d MMM YYYY HH:mm:ss Z");
答案 2 :(得分:0)
在Moment.js的官方文档中,它说:
矩(字符串);
当从字符串创建片刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后如果找不到已知格式则返回到新日期(字符串)。
因此,为了绕过新的Date陷阱并应用ISO 8061.我可以先应用moment()
然后应用utc()
。
moment("Sat, 21 Aug 2010 22:31:20 +0000").utc()
在这种情况下,虽然输入字符串的格式不同(但都遵循ISO 8061),但仍然可以安全地处理它们。