2010-10-29 472 views
64

在PHP中,您可以使用strtotime()輕鬆地將英文文本日期時間描述轉換爲適當的日期。Javascript的等效PHP的strtotime()?

Javascript中有沒有類似的東西?

+0

對於從格式DD.MM.YYYY解析,檢查http://stackoverflow.com/questions/1576753/parse-datetime-string-in-javascript – 2013-02-07 09:52:18

回答

41

我發現this article並試過本教程。基本上,你可以使用日期構造解析的日期,然後寫從getTime()方法

var d=new Date("October 13, 1975 11:13:00"); 
document.write(d.getTime() + " milliseconds since 1970/01/01"); 

請問這項工作得到秒?

+0

看來我不起作用,日期格式爲dmY格式。 – 2013-02-07 09:44:20

+22

-1。這隻包括RFC 822或ISO 8601格式的日期,但'strtotime()'支持許多其他格式。 – 2013-05-20 07:03:45

+1

這可能會發生在滿足OP的用例上,但這是一個技術上不正確,無法回答的問題。見(並請upvote)Westy92的答案。 – 2016-03-07 22:07:34

53

是的。並且在所有主要的瀏覽器支持:

var ts = Date.parse("date string"); 

唯一不同的是,這個函數返回毫秒,而不是秒,所以你需要通過1000

Check what valid formats can JavaScript parse.

+1

這應該是被接受的答案。 +1 – Doorknob 2013-07-12 02:47:46

+18

不是;這與php strtotime非常不同,沒有一個php文檔工作的例子,沒有一個'strtotime(「now」); strtotime(「2000年9月10日」); strtotime(「+ 1 day」); strtotime(「+ 1 week」); strtotime(「+ 1周2天4小時2秒」); strtotime(「下週四」); strtotime(「上週一」);' – 2014-01-04 00:47:48

+0

謝謝@Arnaldo。這對我有用。你的答案比「Djechelon's」更可接受 – Adi 2015-01-26 12:19:31

21

退房劃分結果this在JavaScript中實現PHP的strtotime()!

我發現它對PHP所做的所有操作都一樣。

更新:此功能按1.0.2版本無法處理這種情況:'2007:07:20 20:52:45' (注意:分離的年份和月份)

更新2018:

這是現在可作爲npm模塊使用!只要npm install locutus,然後在您的源:

var strtotime = require('locutus/php/datetime/strtotime'); 
+1

我通常不喜歡只是鏈接到圖書館的答案,但在這種情況下,因爲JavaScript並沒有將幾乎瘋狂的情況作爲strtotime處理,所以這是一個很好的答案。 謝謝! – user819644 2017-03-10 00:40:44

4

我嫉妒在PHP的strtotime(),但我用的時刻做我在JavaScript。不像從PHP那樣甜蜜,但也巧妙地做到了這一點。

// first day of the month 
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate(); 

來回走使用subtract()add()endOf()startOf()

// last day of previous month 
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate(); 
-2

對於解析字符串is inconsistent瀏覽器支持。由於沒有關於哪種格式應該被支持的規範,所以某些瀏覽器中的工作方式在其他瀏覽器中不起作用。

嘗試Moment.js - 它parsing dates提供跨瀏覽器的功能:

var timestamp = moment("2013-02-08 09:30:26.123"); 
console.log(timestamp.milliseconds()); // return timestamp in milliseconds 
console.log(timestamp.second()); // return timestamp in seconds 
+0

這並沒有完全回答這個問題(並且有一個負分)。有沒有辦法撤銷賞金? – Westy92 2017-03-08 19:42:11

0

有跡象表明,提供類似的行爲幾個模塊,但不完全像PHP的的strtotime。在我發現的幾個替代品中,date-util可以產生最好的結果。

-1

var strdate = new Date('Tue Feb 07 2017 12:51:48 GMT+0200 (Türkiye Standart Saati)'); 
 
var date = moment(strdate).format('DD.MM.YYYY'); 
 
$("#result").text(date); //07.02.2017
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script> 
 

 
<div id="result"></div>

+0

*棄用警告:提供的值不是採用可識別的ISO格式。瞬間建設回落到js Date()'* - sooo ...與'new Date(strdate)'一樣真的...... – deceze 2017-02-06 10:01:54