2015-11-02 49 views
0

我的日期定義爲"Jul 2015""Aug 2016",我需要獲取它們的最後一年版本。JavaScript - 以特定格式在去年獲得同一月份

例如:

getLastYear("Jul 2015") 
return: Jul 2014 

我怎麼做在JavaScript?我嘗試至今不能正常工作:

var date = new Date('Jul 2015'); 
var new_date = new Date().setYear(date .getFullYear()-1); 
alert(new_date); 

// return a timestamp value e.g. 1404505003030 

回答

2

你幾乎得到了它,你錯過了轉換timestampdate

var date = new Date('Jul 2015'); 
var new_date = new Date().setYear(date .getFullYear()-1); 
    new_date = new Date(new_date) 

要格式化日期,使用這樣的:

var months = [ 
    "Jan", "Feb", "Mar", 
    "Apr", "May", "Jun", "Jul", 
    "Aug", "Sep", "Oct", 
    "Nov", "Dec" 
]; 


var monthIndex = new_date.getMonth(); 
var month = months[monthIndex] 
var year = new_date.getYear(); 
var final_date = year + month 
console.log(final_date) // you will get 'Jul 2014' 
+0

這樣的作品,但反正是有,我可以轉換該日期格式與輸入格式相同,即2014年7月? – nogias

+0

@tribungbu是的,我更新了我的答案,檢查它。 – levi

+0

爲什麼要創建另一個變量?有沒有必要它 –

0
var date = new Date('Jul 2015'); 
date.setYear(date .getFullYear()-1); 
alert(date); 

應該爲你做。 setYear返回一個值,並在日期中設置年份,因此您需要相應地使用它。

+0

這是行得通的,但無論如何,我可以將該日期格式轉換爲與輸入相同的格式,即2014年7月? – nogias

+0

看看這個詳細的解釋http://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date –

+0

有幾種方法,你可以做一個date.toDateString()然後將它串到你想得到的,或者你可以使用date.getMonth()和date.getYear()並將它們附加到一個字符串 –

0

你需要做這樣的事情,你可以根據你的要求編輯一個月陣列,

function getLastYear(date){ 
    var month = new Array(); 
    month[0] = "January"; 
    month[1] = "February"; 
    month[2] = "March"; 
    month[3] = "April"; 
    month[4] = "May"; 
    month[5] = "June"; 
    month[6] = "July"; 
    month[7] = "August"; 
    month[8] = "September"; 
    month[9] = "October"; 
    month[10] = "November"; 
    month[11] = "December"; 
    var d = (new Date(new Date('1 '+date).setYear(new Date('1 '+date).getFullYear() -1))) 
    console.log(d); 
    return month[d.getMonth()]+' '+d.getFullYear() 
} 

getLastYear("July 2016") //"July 2015" 
+0

運行2016年7月的函數返回7月2014? – nogias

0

實際上,你不需要爲Date對象。您也可以使用字符串函數爲:

var dateString = "Jul 2015"; 
var newString = dateString.substr(0,dateString.length - 4)+parseInt(dateString.substr(dateString.length - 4)-1); 
alert(newString); 
0
var date = new Date('Jul 2015'); 
var new_date = new Date(date .getFullYear()-1,date.getMonth()); 
var year = new_date.getFullYear(); 
Date.prototype.getMonthName = function() { 
      var monthNames = [ "Jan", "Feb", "Mar", "April", "May", "Jun", 
         "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" ]; 
      return monthNames[this.getMonth()]; 
    } 
var month = new_date.getMonthName(new_date.getMonth()); 
alert(month+" "+year); 

你也可以使用JavaScript的時刻庫轉換,並從不同勢格式http://momentjs.com/ reference: