AWS SDK 包含了用于转换 Amazon 日期格式的实用函数。
例如,在从 S3 获取对象回调中,有一个名为 'LastModified' 的属性,其采用的是 Amazon 日期格式。尽管看起来它们只是将标准的 Date 类用于像 S3 对象的 'LastModified' 属性这样的日期属性,但该类本身包含了多种内置格式化方法(遗憾的是,并不直接支持 Unix 纪元格式):
let awsTime = response.LastModified;
console.log("时间格式",{
"字符串形式" : awsTime.toString(),
"JSON 格式" : awsTime.toJSON(),
"UTC 字符串形式" : awsTime.toUTCString(),
"时间字符串形式" : awsTime.toTimeString(),
"日期字符串形式" : awsTime.toDateString(),
"ISO 字符串形式" : awsTime.toISOString(),
"本地时间字符串形式" : awsTime.toLocaleTimeString(),
"本地日期字符串形式" : awsTime.toLocaleDateString(),
"本地字符串形式" : awsTime.toLocaleString()
});
输出示例:
时间格式 {
"字符串形式": "Fri Sep 27 2019 16:54:31 GMT-0400 (EDT)",
"JSON 格式": "2019-09-27T20:54:31.000Z",
"UTC 字符串形式": "Fri, 27 Sep 2019 20:54:31 GMT",
"时间字符串形式": "16:54:31 GMT-0400 (EDT)",
"日期字符串形式": "Fri Sep 27 2019",
"ISO 字符串形式": "2019-09-27T20:54:31.000Z",
"本地时间字符串形式": "16:54:31",
"本地日期字符串形式": "2019-9-27",
"本地字符串形式": "2019-9-27 16:54:31"
}
然而,AWS utils 模块中包含了一个 date
方法,其中就有如 unixTimestamp
这样的其他函数:
let awsTime = response.LastModified;
let unixEpoch = Math.floor(AWS.util.date.unixTimestamp(awsTime));
请注意,这个方法默认返回一个浮点值,因此使用 Math.floor()
来取整。
以下是 AWS SDK 中关于 unixTimestamp
函数的代码片段(最新版):
/**
* @return [Integer] 返回当前时间对应的 UNIX 时间戳值
*/
function unixTimestamp(date) {
if (date === undefined) { date = util.date.getDate(); }
return date.getTime() / 1000;
}
此外,SDK 中还提供了处理 rfc822 和 iso8601 等格式的方法。