2014-12-19 48 views
0

我試圖從的DateTimePicker tetxbox拿起值,這些值與當前時間比較比較。字符串轉換爲JavaScript中的日期時間和當前時間

JSFiddle

 //startTime textbox text = 19/12/2014 03:58 PM 
     var startTime = Date.parse($('[id$=txtStartDate]').val().toString()); 

     //endTime textbox text = 19/12/2014 04:58 PM 
     var endTime = Date.parse($('[id$=txtEndDate]').val().toString()); 

     var currentTime = Date.now(); 
     alert(startTime); 
     alert(endTime); 
     alert(currentTime); 

     if (currentTime >= startTime && currentTime <= endTime) { 
       alert(); 

     } 

Date.parse()已經從1月1日1970年 Date.now()用於來回轉換字符串毫秒返回自1月1日當前日期毫秒1970

但上述轉換方法無法正常工作。 應該是什麼邏輯,首先sonverting字符串格式一樣19/12/2014下午3時58分比較日期時間爲Date對象,然後做比較。

+0

我已編輯的jsfiddle – 2014-12-19 11:03:58

+0

你好,請檢查此鏈接http://jsfiddle.net/3mztdaja/2/ – user00000341 2014-12-19 11:07:21

+0

你是使用日期選擇器,你可以拋出鏈接,因爲我發現任何這樣的插件不可能包含解析器。 – 2014-12-19 11:09:52

回答

1

由於該格式isn't documented as being supported by Date.parse,最好的辦法是自己解析它,這並不困難:使用String#split或捕捉組將其分割成各個部分,使用parseInt到是數字部分轉換正則表達式字符串到數字(或者,像這樣控制的輸入,只要使用他們的一元+),然後用new Date(...)用這些數字來創建一個Date實例。

有一個問題:該monthnew Date預計是從零開始,例如0 =一月。另外,如果輸入使用AM/PM而不是24小時制,請記住將小數值加12。


或者,當然,使用任何幾種日期/時間處理庫,如MomentJS

1

你應該使用這個方法

var startTime = new Date(year, month, day, hours, minutes, seconds, milliseconds); 

這個演示http://jsfiddle.net/hswp7x8k/

到extrat值從字符串您可以使用此方法

dd = '19/12/2014 03:58'; 
dd.match(/(\d+)\/(\d+)\/(\d+)\s*(\d+):(\d+)/); 

這個演示http://jsfiddle.net/w3wow1ay/2/

1

的問題是Date()預計日期格式mm/dd/yyyy,所以你的日期無效。

您可以修復你的約會對象是這樣的:

function toValidDate(datestring){ 
    return datestring.replace(/(\d{2})(\/)(\d{2})/, "$3$2$1"); 
} 

var startTime = Date.parse(toValidDate($('[id$=txtStartDate]').val().toString())); 
var endTime = Date.parse(toValidDate($('[id$=txtEndDate]').val().toString()));  
var currentTime = Date.now(); 

alert(startTime); 
alert(endTime); 
alert(currentTime); 

DEMO:http://jsfiddle.net/3mztdaja/3/

相關問題