2017-08-15 43 views
1

嗨我需要每年直接從用戶進入商業的日期存儲的問題是,每次我添加一年插入之間的日期和月。直接從用戶輸入日期直接存儲

var yearOnCompany = moment(user.fecha_ingreso_empresa, "YYYYMMDD").fromNow(); 
var dateStart = moment(user.fecha_ingreso_empresa).format("DD-MM-YYYY"); 
console.log(dateStart); 
//03-12-2009 
var f = parseInt(yearOnCompany); 
var yearsOfWork = []; 
for(var i = 1; i <= f; i++) 
{ 
    dateStart = moment(dateStart, "DD-MM-YYYY").add(1, 'years').calendar(); 
    yearsOfWork.push(dateStart); 
} 
console.log(yearsOfWork); 

結果呢:

0:"12/03/2010" 
1:"03/12/2011" 
2:"12/03/2012" 
3:"03/12/2013" 
4:"12/03/2014" 
5:"03/12/2015" 
6:"12/03/2016" 
7:"03/12/2017" 
+0

怎麼樣'yearsOfWork.push(dateStart.format( 「DD-MM-YYYY」))' –

+2

或'dateStart =力矩(dateStart, 「DD-MM-YYYY」)。添加(1,'年「)格式(」DD-MM-YYYY「);' –

+0

是啊!這項工作感謝兄弟 – CoolLife

回答

0

這是一個微妙的錯誤!根據文檔https://momentjs.com/docs/#/displaying/.calendar()使用默認的日期格式,可能使用環境的語言環境,如果沒有提供,那麼看起來它默認爲MM/DD/YYYY,而不是所需的DD/MM/YYYY。因此,第一次迭代dateStart轉換爲12/03/2010,交換月份和日期。然後在下一次迭代時,它又被轉換回DD-MM-YYYY,再次交換日期和月份,然後當再次傳遞到.calendar()時,日期和月份再次交換,再次給出正確的格式。

存在的潛在問題是,你從一個字符串片刻對象改變dateStart,所以我會改寫這樣的代碼:

var dateStart = moment(user.fecha_ingreso_empresa).format("DD-MM-YYYY"); 
var f = parseInt(yearOnCompany); 
var yearsOfWork = []; 
for(var i = 1; i <= f; i++) 
{ 
    dateStart.add(1, 'years'); 
    yearsOfWork.push(dateStart.format("DD-MM-YYYY")); 
} 
console.log(yearsOfWork); 
0

我覺得你有與格式的問題,正確的我如果我錯了。 請試試這個。

for(var i = 1; i <= f; i++) 
{ 
    dateStart = moment(dateStart , "DD-MM-YYYY").add(1, 'years'); 
    yearsOfWork.push(dateStart.format('DD-MM-YYYY')); 
}