使用Moment.js将日期格式化为unix时间戳(以毫秒为单位)将返回格式字符串

时间:2016-10-12 09:58:59

标签: javascript unix momentjs

我知道这里有很多问题要求相似,但看了解答案后,我似乎得到了意想不到的结果。

我有一个完整的日期,我需要将其转换为毫秒

的unix时间戳

日期为完整格式:$client = new Google_Client(); $client->setApplicationName("Test"); $client->useApplicationDefaultCredentials(); $client->addScope('https://www.googleapis.com/auth/cloud-platform'); $storage = new Google_Service_Storage($client); $file_name = "test.txt"; $file_content = "this is a test"; $postbody = array( 'name' => $file_name, 'data' => $file_content, 'uploadType' => "media", 'predefinedAcl' => 'publicRead' ); $gsso = new Google_Service_Storage_StorageObject(); $gsso->setName( $file_name ); $result = $storage->objects->insert( "my_bucket", $gsso, $postbody );

如果我尝试使用Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)标识符对unix毫秒进行格式化(如文档中所示),我只需要将字符串x返回

"x"

我在这里做错了什么?在我这样做之前,是否需要将moment(date).format('x') // = x转换为完整格式之外的其他内容?为什么将参数传递给date只是让我回到我输入的格式?

1 个答案:

答案 0 :(得分:2)

在Moment 2.8.4中添加了x选项,任何早于该版本的版本都将返回字母x而不是以毫秒为单位的unix时间。

版本2.8.4

var date = 'Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)';
var unix = moment(new Date(date)).format('x');
console.log(unix);
<p>Version 2.8.4 - working !</p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>

旧版本

var date = 'Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)';
var unix = moment(new Date(date)).format('x');
console.log(unix);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>

请注意,较新版本的Moment也会从随机字符串中弃用构造,因此

moment("Tue Dec 06 2016 10:51:47 GMT+0000 (GMT)")

会给你一个弃用通知,请参阅 - &gt; https://github.com/moment/moment/issues/1407