เมื่อเร็วๆ นี้ ฉันพบปัญหา กล่าวคือ เมื่อรับวันที่ในแบบฟอร์มและส่งไปยังพื้นหลังผ่าน json ฟังก์ชัน Date.parse(str) จะรายงานข้อผิดพลาดภายใต้ ff: NAN
หลังจากค้นหาข้อมูลบางอย่าง ฉันพบว่าฟังก์ชัน Date.parse() มีข้อกำหนดสำหรับรูปแบบวันที่ โปรดดูรายละเอียดที่ฟังก์ชัน Date.parse
สำหรับวันที่ดำเนินการ js:
สร้างวัตถุวันที่:
var objDate=new Date([รายการอาร์กิวเมนต์]);
แบบฟอร์มพารามิเตอร์มีห้าประเภท:
คัดลอกรหัสรหัสดังต่อไปนี้:
ดู plainnew Date("เดือน dd,yyyy hh:mm:ss");
วันที่ใหม่("เดือน dd,yyyy");
วันที่ใหม่(yyyy,mth,dd,hh,mm,ss);
วันที่ใหม่(ปปปป,เดือน,วว);
วันที่ใหม่(ms);
แสดงให้เห็น:
เดือน: ระบุชื่อของเดือนเป็นภาษาอังกฤษ ตั้งแต่เดือนมกราคมถึงธันวาคม
mth: หมายถึงเดือนเป็นจำนวนเต็ม ตั้งแต่ 0 (มกราคม) ถึง 11 (ธันวาคม)
เนื้อหา
dd: ระบุวันของเดือนตั้งแต่ 1 ถึง 31
ปปปป: ปีสี่หลัก
hh: ชั่วโมง ตั้งแต่ 0 (เที่ยงคืน) ถึง 23 (23.00 น.)
mm: นาที จำนวนเต็มตั้งแต่ 0 ถึง 59
ss: วินาที จำนวนเต็มตั้งแต่ 0 ถึง 59
ms: มิลลิวินาที ซึ่งเป็นจำนวนเต็มที่มากกว่าหรือเท่ากับ 0 ซึ่งระบุจำนวนมิลลิวินาทีระหว่างเวลาที่จะสร้างจนถึงเวลา GMT ของวันที่ 1 มกราคม 1970
สิ่งที่ฉันพบ:
การสร้างวันที่ใน Javascript ยังสามารถรองรับ new Date("yyyy/MM/dd"); โดยที่ MM คือจำนวนเต็มที่แสดงเดือนตั้งแต่ 0 (มกราคม) ถึง 11 (ธันวาคม) ดังนั้นจึงสะดวกมากที่จะใช้ความสามารถในนิพจน์ทั่วไป เพื่อแปลงวันที่ของสตริง
รหัสทดสอบ:
คัดลอกรหัสรหัสดังต่อไปนี้:
<mce:script type="text/javascript"><!--
document.write("<br/>" + new Date("3 กุมภาพันธ์ 2552"));
document.write("<br/>" + new Date("3 กุมภาพันธ์ 2552 10:52:03"));
document.write("<br/>");
document.write("<br/>" + วันที่ใหม่ (2009,1,3));
document.write("<br/>" + วันที่ใหม่ (2009,1,3,10,52,03));
document.write("<br/>");
document.write("<br/>" + new Date(Date.parse("กุมภาพันธ์ 3,2009")));
document.write("<br/>" + new Date(Date.parse("กุมภาพันธ์ 3,2009 10:52:03")));
document.write("<br/>" + วันที่ใหม่ (Date.parse(2009,1,3))); //Output: NAN
document.write("<br/>" + วันที่ใหม่ (Date.parse(2009,1,3,10,52,03))); //Output: NAN
document.write("<br/>" + วันที่ใหม่(Date.parse("2009/02/03")));
document.write("<br/>");
document.write("<br/>" + วันที่ใหม่ ("2009/02/03"));
document.write("<br/>" + วันที่ใหม่ ("2009/02/03 11:12:13"));
document.write("<br/>" + วันที่ใหม่ ("2009-02-03")); //Output: NAN
// --></mce:script>
ผลลัพธ์ที่ได้:
วันอังคารที่ 3 กุมภาพันธ์ 00:00:00 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 10:52:03 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 00:00:00 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 10:52:03 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 00:00:00 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 10:52:03 UTC+0800 2009
น่าน
น่าน
วันอังคารที่ 3 กุมภาพันธ์ 00:00:00 UTC+0800 2009
วันอังคารที่ 3 กุมภาพันธ์ 00:00:00 UTC+0800 2009
อังคารที่ 3 ก.พ. 11:12:13 UTC+0800 2009
น่าน
-
คัดลอกรหัสรหัสดังต่อไปนี้:
window.onload=ฟังก์ชั่น(){
var dependentVal = "2005-3-4";
//แปลงเป็นวันที่ตามสตริงวันที่
var regEx = RegExp ใหม่("//-", "gi");
dependedVal=dependedVal.replace(regEx,"/");
//dependedVal=dependedVal.replace("//-","/");//สิ่งนี้ใช้ไม่ได้
การแจ้งเตือน (ขึ้นอยู่กับVal)
//การแยกวิเคราะห์ต้องใช้รูปแบบของ 2005/3/4
var มิลลิวินาที = Date.parse (dependedVal);
การแจ้งเตือน (มิลลิวินาที)
var dependDate=วันที่ใหม่();
dependentDate.setTime(มิลลิวินาที);
var ตอนนี้ = วันที่ใหม่ ();
//ใส่ใจกับวงเล็บ ประเด็นสำคัญ การทำอะไรไม่ถูก
alert("จำนวนปีที่ห่างกัน:"+(now.getFullYear() - dependDate.getFullYear()));
-
ที่จริงแล้ว วันที่จะต้องส่งระหว่างเบราว์เซอร์และเซิร์ฟเวอร์ผ่านค่ามิลลิวินาที มิฉะนั้นระบบจะรายงานข้อผิดพลาด 400!