2014-07-14 52 views
0

在我的Ruby on Rails應用程序中,我有一個用戶可以設置日期的字段。該字段值的格式如下:jQuery,添加日期

$('#search_form_handover_date').val() 
#returns 
"15-07-2014 09:00" 

現在我怎樣才能例如添加到該日起3天,有: 「18-07-2014 09:00」

+0

看起來像一個無效的日期格式,你使用的是日期選擇器,爲什麼是該格式的日期? – adeneo

+0

我使用的是: http://xdsoft.net/jqplugins/datetimepicker/ 而我在javascipt文件中的格式是: 格式:'d-m-Y H:i' –

回答

1

我的moment.js的忠實粉絲,如果你不介意使用第三方JS lib中,你可以做.....

// As the format you gave is non standard, you need to tell moment what it's getting 
var myTime = moment("15-07-2014 09:00", "DD-MM-YYYY HH:mm"); 

console.log(myTime.format('DD-MM-YYYY HH:mm')); 

var newTime = moment(myTime).add('3', 'days'); 

console.log(newTime.format('DD-MM-YYYY HH:mm')); 
+0

感謝您的幫助,但我不想使用外部庫。我非常接近解決方案。我只需要轉換: Date {Fri Jul 18 2014 00:00:00 GMT + 0200(CEST)} to this: 「18-07-2014 09:00」 –

+0

我決定使用moment.js,因爲它是一個偉大的文庫。感謝幫助。 –

1

嘗試類似下面如果您的日期字符串始終保持相同的格式,

var date = "15-07-2014 09:00"; 
var dateParts = (date.split(" ")[0]).split("-"); 
var timeParts = (date.split(" ")[1]).split(":"); 
var dateObj = new Date(dateParts[2],dateParts[1]-1,dateParts[0],timeParts[0],timeParts[1]); 
dateObj.setDate(dateObj.getDate()+3); 
console.log(dateObj) 

//If you don't use any library like Jquery datepicker, you have to use basic js operation to format the date (but not recommend) 

console.log(formateDate(dateObj)) 

function formateDate(DateObj) 
{ 
return addLeadingZeros(dateObj.getDate())+"-"+addLeadingZeros(dateObj.getMonth()+1)+"-"+dateObj.getFullYear()+" "+addLeadingZeros(dateObj.getHours())+":"+addLeadingZeros(dateObj.getMinutes()); 

} 

function addLeadingZeros(intArg) 
{ 
    return ('0' + intArg).slice(-2) 
} 
+0

這是一個很好的解決方案。但最後我想把這個dateObj作爲這種格式的字符串:「15-07-2014 09:00」。你知道該怎麼做嗎? –

+1

我編輯了答案,但我建議你使用一些庫來設置你的日期格式。 –