2016-07-12 38 views
0

我有一個日期選擇器下拉jquery getday()給我錯誤的一天?

<input type="date" class="date"> 

我用一週的某一天的jQuery

​​ 當我拿起週二該警報是1

得到什麼?

不是2?

+0

當我在這裏運行該代碼時,我確實得到了'2'。你的時區可能會讓你感到困擾 - 如果你將'new Date(「7/12/2016」)。getDay()'粘貼到瀏覽器控制檯中,你會得到什麼? – Yuck

+0

在這裏可以正常工作:https://jsfiddle.net/RoryMcCrossan/y174nvdv/ –

+0

但是在其他地方的代碼如下:var today = new Date() var dayIndex = today.getDay() if(dayIndex == 2){(「。tuesday」)。show(); (「。daySelector」)。val('tuesday'); }它給了我正確的一天嗎? –

回答

1

如果預期的結果,您可以創建一個對象是2週二,使用Date.prototype.toUTCString()String.prototype.slice()

var days = { 
 
    Sun: 0, 
 
    Mon: 1, 
 
    Tue: 2, 
 
    Wed: 3, 
 
    Thu: 4, 
 
    Fri: 5, 
 
    Sat: 6 
 
}; 
 

 
function dateFunction() { 
 
    $(".date").on("change", function() { 
 
    var day = days[this.valueAsDate.toUTCString().slice(0,3)]; 
 
    alert(day); 
 
    }); 
 
} 
 

 
dateFunction()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="date" class="date">

+0

謝謝你的工作!它只是覺得應該有一個更簡單的方法? –

+0

@ N.Sch你是什麼意思的「更容易」?方法利用一個對象,一個調用'.toUTCString()',一個調用'.slice(0,3)'來返回預期的結果。 – guest271314

0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

通過getDay返回的值()是與星期幾對應的整數:星期日爲0,星期一爲1,星期二爲2星期一,等等。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

語法可以用作new Date(dateString);

dateString 表示日期的字符串值。該字符串應採用Date.parse()方法(IETF兼容的RFC 2822時間戳和ISO8601的一個版本)識別的格式。 注意:由於瀏覽器的差異和不一致性,強烈建議不要使用Date構造函數(和Date.parse,它們是等價的)解析日期字符串。

這就是說,它是(1)可以預料,星期二由數字2表示,和(2)disencouraged使用新Date(dateString)。更好的選擇是將日期輸入的值解析爲年/月/日並使用語法。