生成类似于Google Tasks API的RFC 3339时间戳?

lev*_*evi 27 javascript timestamp rfc3339 google-tasks google-tasks-api

我正在构建与Google Tasks同步的应用.作为同步的一部分,我想比较本地任务和API任务,并查看最近更改了哪一个.

Google API的每项任务都包含一个updated属性,如下所示:

2011-08-30T13:22:53.108Z
Run Code Online (Sandbox Code Playgroud)

现在我想生成一个类似的时间戳,这样每次我在我的应用程序上更新任务时它都会设置一个新updated值.要生成我使用的RFC 3339时间戳 - http://cbas.pandion.im/2009/10/generating-rfc-3339-timestamps-in.html生成如下内容:

2011-08-30T09:30:16.768-04:00
Run Code Online (Sandbox Code Playgroud)

问题是,即使本地日期较新,API日期也总是比本地日期"更大".我猜这与两者之间的不同格式有关.

以下是两个日期,顶部来自Google Tasks API(大约10分钟前),而底部日期是在一分钟前在本地生成的.当比较哪个更大时,它告诉我最重要的是.

2011-08-30T13:22:53.108Z
2011-08-30T09:41:00.735-04:00
Run Code Online (Sandbox Code Playgroud)

我的格式错了吗?我在这做错了什么?对此的任何帮助都非常感谢.

Tre*_*ams 46

似乎已经给出了很多复杂的答案,但是这很好用,不是吗?

(new Date()).toISOString()
Run Code Online (Sandbox Code Playgroud)

  • @IvanYarych 秒的分数是有效的 ISO8601/RFC3339 格式,只是很少使用。任何根据规范解析的东西都应该可以工作。 (3认同)
  • @LucaDiLiello RFC3339表示YYYY-MM-DD,这就是to ISOString()输出的内容。 (2认同)

Joe*_*Joe 41

格式是ISO,因此(new Date()).toISOString()将为您提供该表单.我正在阅读的内容可能需要填充:

/* use a function for the exact format desired... */
function ISODateString(d){
 function pad(n){return n<10 ? '0'+n : n}
 return d.getUTCFullYear()+'-'
      + pad(d.getUTCMonth()+1)+'-'
      + pad(d.getUTCDate())+'T'
      + pad(d.getUTCHours())+':'
      + pad(d.getUTCMinutes())+':'
      + pad(d.getUTCSeconds())+'Z'}

var d = new Date();
print(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z
Run Code Online (Sandbox Code Playgroud)

资料来源:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

  • 哇谢谢.我一定很困惑因为谷歌说要在拉动任务时将"RFC 3339时间戳"作为updatedMin参数传入. (2认同)

Don*_*ton 10

我发现moment.js库非常适合在javascript中使用时间.moment().format()产生一个时间戳,其格式为Google API预期的格式datetime.或者,不依赖于您的应用程序的默认格式,

moment().format("YYYY-MM-DDTHH:mm:ssZ")
Run Code Online (Sandbox Code Playgroud)

所有字符串选项(包括小数秒,如果这是你需要的):http://momentjs.com/docs/#/displaying/format/

  • moment().toISOString()// 2013-02-04T22:44:30.652Z (17认同)
  • Z char是指时区,你不能直接使用它 (2认同)