tôi cần phải chuyển đổi Monthname thành số nguyên của tháng đó (và muốn tránh một câu lệnh chuyển đổi lớn). bất kỳ ý tưởng?có bất kỳ điều gì trong javascript có thể chuyển đổi "Tháng 8" thành 8 không?
Trả lời
Chỉ cần tạo ra một ngày trong tháng đó, phân tích nó, và sử dụng getMonth()
như
function convertMonthNameToNumber(monthName) {
var myDate = new Date(monthName + " 1, 2000");
var monthDigit = myDate.getMonth();
return isNaN(monthDigit) ? 0 : (monthDigit + 1);
}
alert(convertMonthNameToNumber("August")); //returns 8
alert(convertMonthNameToNumber("Augustsss")); //returns 0 (or whatever you change the default too)
alert(convertMonthNameToNumber("Aug")); //returns 8 - Bonus!
alert(convertMonthNameToNumber("AuGust")); //returns 8 - Casing is irrelevant!
Bạn có thể tạo một mảng (cặp tên/cặp) trong mã của bạn vì nó chỉ có 12 tháng và viết một hàm để thực hiện.
var months = {August: 8};
var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
// ...
var monthNumber = monthtbl[monthName];
chỉnh sửa này nhưng làm theo cách các @Chad gợi ý :-)
Nếu bạn muốn làm cho nó không nhạy cảm với trường hợp chữ cái, bạn sẽ tạo đối tượng ("monthtbl") tất cả chữ thường và sau đó sử dụng
var monthNumber = monthtbl[monthName.toLowerCase()];
+1 Đó là cách tiếp cận! – Achilles
Đây là chất rắn. Không quan tâm: làm thế nào tôi sẽ làm cho trường hợp này không nhạy cảm? Trong trường hợp tôi cần phải phân tích cú pháp đầu vào của người dùng? –
FWIW, điều này rõ ràng sẽ nhanh hơn nếu bạn làm điều này nhiều lần. –
Một lựa chọn khác chỉ để ném ra khỏi đó, bạn có thể sử dụng một mảng và $.inArry()
, như thế này:
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getMonth(name) {
return $.inArray(name, months) +1;
}
Mặc dù đánh giá bởi những câu hỏi trước đó của bạn, kéo ngày trực tiếp từ đối tượng jquery UI datepicker thể dễ dàng hơn nhiều.
function monthToNumber(month) {
return new Date(Date.parse("1 "+month)).getMonth()+1;
}
đây giá trị giữ giá trị tên tháng
var month1 = value;
month1 = month1.toLowerCase();
var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
month1 = months.indexOf(month1);
Vui lòng giải thích ngắn gọn câu trả lời của bạn để làm cho nó hữu ích hơn cho OP và các độc giả khác. –
- 1. Có thể chuyển đổi bitet <8> thành char in C++ không?
- 2. Windows 8 có biên dịch JavaScript không?
- 3. Chuyển đổi UTF-8 trong Android?
- 4. Điều gì có thể xảy ra khi chuyển mã HTML từ UTF-8 sang UTF-16?
- 5. có bất kỳ điều gì tồn tại để chuyển đổi xml -> yaml trực tiếp không?
- 6. Có bất kỳ bất lợi nào khi sử dụng: văn bản/đồng bằng; charset = "UTF-8"
- 7. Làm thế nào để chuyển đổi BufferedImage thành 8 bit?
- 8. Spring util: properties - bạn có thể thay đổi mã hóa thành UTF-8 không?
- 9. Có thể có Trình mô phỏng Windows 8 có điều kiện không?
- 10. Lỗi Javascript: "Không có bộ chuyển tiếp", chỉ trong IE 7, 8
- 11. Cách chuyển đổi chuỗi thành utf-8 bằng Python
- 12. Chuyển đổi 8 chữ số thành Loại ngày giờ
- 13. Có bất kỳ điều gì thay đổi lược đồ mang tên xuất khẩu trong GCC không?
- 14. TimeZoneInfo.ConvertTime không chuyển đổi bất cứ điều gì
- 15. Chuyển đổi tên tháng thành số tháng trong SQL Server
- 16. "real * 8" có nghĩa là gì?
- 17. Làm thế nào để chuyển đổi mã ký hiệu unicode javascript thành utf-8?
- 18. Bất kỳ biểu đồ nào có sẵn cho Windows Phone 8
- 19. Có bất kỳ trình chuyển đổi Lua hoặc JavaScript nào gần đây ở đâu đó không?
- 20. là có bất kỳ trình biên dịch có thể chuyển đổi regexp để fsm? hoặc có thể chuyển đổi thành từ ngữ của con người?
- 21. Trong Ruby on Rails, '#encoding: utf-8' và 'config.encoding = "utf-8"' có khác nhau không?
- 22. PIL: Chuyển đổi hình ảnh RGB thành bảng màu 8 bit cụ thể?
- 23. Có bảng màu chuẩn 8 bit không?
- 24. chuyển đổi bất kỳ chuỗi ngày nào thành dấu thời gian không có múi giờ
- 25. Có bất kỳ thuật toán nào để chuyển đổi video 2D thành video 3D không?
- 26. chuyển đổi ngày tháng thành mili giây bằng javascript
- 27. Chuyển đổi bất kỳ đối tượng nào thành một byte []
- 28. DwmIsCompositionEnabled có còn được sử dụng trong Windows 8 không?
- 29. Có thể mô phỏng ARM trên Windows 8 không?
- 30. Không có DatePicker cho xaml trong Windows 8 Metro?
Đó là một ý tưởng hay! – Pointy
Tôi thích điều này. Để hoàn thành, điều gì sẽ xảy ra nếu tôi vượt qua một tháng không hợp lệ (như "Äugust")? –
Đáng nói rằng * Date.parse() * trả về một số đại diện cho ngày tháng, không phải là một đối tượng ngày tháng thực tế. Ngoài ra * getMonth() * sẽ trả về * 7 *, không * 8 * vì các tháng không dựa trên. –