簡體   English   中英

使用JS和Jquery將'Month and Year'字符串轉換為Date對象

[英]Convert 'Month and Year' string into Date object using JS and Jquery

我有兩個數組(我是從一個表的jQuery中創建的),第一個是結束日期,第二個是開始日期。 元素是字符串:

["June, 2012", "June, 2012", "August, 2011", "April, 2013", "August, 2010", "August, 2010", "April, 2013", "April, 2012", "April, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012", "June, 2012"]

["November, 2011", "April, 2012", "May, 2008", "May, 2007", "November, 2007", "May, 2007", "June, 2006", "June, 2007", "April, 2006", "January, 2008", "April, 2001", "April, 2001", "April, 2006", "April, 1998", "April, 1998", "September, 2008", "August, 2010", "August, 2009", "August, 2010", "August, 2009", "August, 2010", "August, 2010", "August, 2010", "January, 1997", "January, 1997", "January, 2010", "January, 2007", "April, 2010"]

我正在嘗試獲取每組索引之間的經過時間。 我假設我必須將這些字符串轉換為Date Object date()然后進行計算以獲取經過的時間,然后使用類似以下的方法將其截斷為僅月份和年份:

function convertDate(passedDate) {
    var m = new Array(7);
    var y = passedDate.getFullYear();
    m[0] = "January";
    m[1] = "February";
    m[2] = "March";
    m[3] = "April";
    m[4] = "May";
    m[5] = "June";
    m[6] = "July";
    m[7] = "August";
    m[8] = "September";
    m[9] = "October";
    m[10] = "November";
    m[11] = "December";
    return m[passedDate.getMonth()] + "months and " + y + " years;  
};

這是小提琴 ,這是我的問題:

  1. 由於我對日期或時間不感興趣,是否有辦法不將其更改為日期對象呢?

  2. 除了嘗試將經過的日期數學公式轉換為日期,然后再轉換回字符串之外,您還有其他建議嗎?

  3. 如何識別當前元素的姐妹元素,從而避免使用雙嵌套循環? (由於它涉及不同的主題,也會在另一個問題中提出這個問題)

感謝您的幫助,因為我正在嘗試制作具有可選屬性的交互式簡歷,並且包含一些數據,因此我不必向打了招呼的招聘人員回答所有基本信息。

確實,您只需要一張從月份名稱到數字的映射即可。 您可以這樣構建一個:

var monthNames = [ "January",   "February", "March",    "April",
                   "May",       "June",     "July",     "August",
                   "September", "October",  "November", "December" ]
var monthNumber = {}
for (var i=0; i<monthNames.length; ++i) {
    monthNumber[monthNames[i]] = i;
}

現在,例如, monthNumber['October'] ==9。然后,您可以將字符串之一轉換為月份數字和年份。 然后,如果將其轉換為絕對月份數(年* 12 +個月),則可以減去以獲得經過的月份。

function stringToMonthNumber(monthYear) {
    var parts = monthYear.split(/\s*,\s*/)
    var month = monthNumber[parts[0]]
    var year = parts[1] - 1
    return year * 12 + month
}

function elapsedMonths(startString, endString) {
    return stringToMonthNumber(endString) - stringToMonthNumber(startString)
}

然后這樣:

elapsedMonths("November, 2011", "June, 2012")

返回7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM