ฉันจะรับวันที่ที่มีรูปแบบ yyyy-mm-dd จากวันที่ISO 8601 ได้อย่างไร
วันที่ 8601 ของฉันคือ
2013-03-10T02:00:00Z
ฉันจะรับสิ่งต่อไปนี้ได้อย่างไร?
2013-03-10
ฉันจะรับวันที่ที่มีรูปแบบ yyyy-mm-dd จากวันที่ISO 8601 ได้อย่างไร
วันที่ 8601 ของฉันคือ
2013-03-10T02:00:00Z
ฉันจะรับสิ่งต่อไปนี้ได้อย่างไร?
2013-03-10
date.split("T")[0]
จะทำ
คำตอบ:
ลองทำตามนี้
date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
ปรับปรุง: -
ตามที่ระบุไว้ในความคิดเห็นฉันกำลังอัปเดตคำตอบเพื่อพิมพ์เลขศูนย์นำหน้าสำหรับวันที่และเดือนหากจำเป็น
date = new Date('2013-08-03T02:00:00Z');
year = date.getFullYear();
month = date.getMonth()+1;
dt = date.getDate();
if (dt < 10) {
dt = '0' + dt;
}
if (month < 10) {
month = '0' + month;
}
console.log(year+'-' + month + '-'+dt);
เพียงแค่ครอบตัดสตริง:
var date = new Date("2013-03-10T02:00:00Z");
date.toISOString().substring(0, 10);
หรือถ้าคุณต้องการเฉพาะวันที่ไม่อยู่ในสตริง
var strDate = "2013-03-10T02:00:00Z";
strDate.substring(0, 10);
YYYYY-MM-DD
ในปี 10,000 เพื่อหลีกเลี่ยงปัญหานี้คุณสามารถแบ่งT
อักขระแทน (ดูen.wikipedia.org/wiki/Year_10,000_problem )
Moment.jsจะจัดการการจัดรูปแบบวันที่ให้คุณ ต่อไปนี้เป็นวิธีการรวมผ่านแท็ก JavaScript จากนั้นเป็นตัวอย่างวิธีใช้ Moment.js เพื่อจัดรูปแบบวันที่
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
moment("2013-03-10T02:00:00Z").format("YYYY-MM-DD") // "2013-03-10"
.toISODateString()
เพราะเป็นกรณีที่เกิดขึ้นบ่อยมาก ...
นี่คือสิ่งที่ฉันทำเพื่อรับวันที่เท่านั้น:
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);
Moment.jsเป็นไลบรารีขนาดใหญ่สำหรับใช้งานครั้งเดียว ผมแนะนำให้ใช้date-fns
แทน มันมีพื้นการทำงานมากที่สุดของ Moment.js formatting options
มีขนาดกำมีขนาดเล็กมากและหลาย ๆ
import format from 'date-fns/format'
format('2013-03-10T02:00:00Z', 'YYYY-MM-DD'); // 2013-03-10, YYYY-MM-dd for 2.x
สิ่งหนึ่งที่ควรทราบก็คือเนื่องจากเป็นรูปแบบเวลาISO 8601เบราว์เซอร์โดยทั่วไปจะแปลงจากเวลา UTC เป็นเขตเวลาท้องถิ่น แม้ว่านี่จะเป็นกรณีการใช้งานง่ายๆที่คุณสามารถทำได้'2013-03-10T02:00:00Z'.substring(0, 10);
แม้ว่าจะเป็นกรณีการใช้งานที่เรียบง่ายนี้ที่คุณอาจจะสามารถทำ
สำหรับการแปลงที่ซับซ้อนมากขึ้นdate-fns
เป็นวิธีที่จะไป
let isoDate = "2013-03-10T02:00:00Z";
var d = new Date(isoDate);
d.toLocaleDateString('en-GB'); // dd/mm/yyyy
d.toLocaleDateString('en-US'); // mm/dd/yyyy
ใช้:
new Date().toISOString().substring(0, 10);
สิ่งนี้จะแสดงผลวันที่ในรูปแบบปปปป - ดด - วว:
let date = new Date();
date = date.toISOString().slice(0,10);
ส่งวันที่ของคุณในวัตถุวันที่:
var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
สำหรับทุกคนที่ใช้การแยกชิ้นส่วนและความพยายามแบบสตริงอื่น ๆ เพื่อรับวันที่คุณอาจตั้งค่าตัวเองสำหรับเขตเวลาที่เกี่ยวข้องกับความล้มเหลว!
ISO-String มี Zulu-Timezone และวันที่ตามเขตเวลานี้ซึ่งหมายความว่าอาจใช้วันก่อนหน้าหรือหลังจากนั้นไปยังเขตเวลาจริงซึ่งคุณต้องคำนึงถึงในห่วงโซ่การเปลี่ยนแปลงของคุณ
ดูตัวอย่างนี้:
const timeZoneRelatedDate = new Date(2020, 0, 14, 0, 0);
console.log(timeZoneRelatedDate.toLocaleDateString(
'ja-JP',
{
year: 'numeric',
month: '2-digit',
day: '2-digit'
}
).replace(/\//gi,'-'));
// RESULT: "2020-01-14"
console.log(timeZoneRelatedDate.toISOString());
// RESULT: "2020-01-13T23:00:00.000Z" (for me in UTC+1)
console.log(timeZoneRelatedDate.toISOString().slice(0,10));
// RESULT: "2020-01-13"
หากคุณมีวัตถุวันที่:
let date = new Date()
let result = date.toISOString().split`T`[0]
console.log(result)
หรือ
let date = new Date()
let result = date.toISOString().slice(0, 10)
console.log(result)
หากต้องการขยายโซลูชันของrk rk : ในกรณีที่คุณต้องการให้รูปแบบรวมเวลาคุณสามารถเพิ่มลงในtoTimeString()
สตริงของคุณจากนั้นตัดส่วน GMT ดังต่อไปนี้:
var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString() + ' ' + d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));
ฉันใช้สิ่งนี้:
HTMLDatetoIsoDate(htmlDate){
let year = Number(htmlDate.toString().substring(0, 4))
let month = Number(htmlDate.toString().substring(5, 7))
let day = Number(htmlDate.toString().substring(8, 10))
return new Date(year, month - 1, day)
}
isoDateToHtmlDate(isoDate){
let date = new Date(isoDate);
let dtString = ''
let monthString = ''
if (date.getDate() < 10) {
dtString = '0' + date.getDate();
} else {
dtString = String(date.getDate())
}
if (date.getMonth()+1 < 10) {
monthString = '0' + Number(date.getMonth()+1);
} else {
monthString = String(date.getMonth()+1);
}
return date.getFullYear()+'-' + monthString + '-'+dtString
}
ที่มา: http://gooplus.fr/en/2017/07/13/angular2-typescript-isodate-to-html-date/
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
alert(d.toLocaleDateString());
let dt = new Date('2013-03-10T02:00:00Z');
let dd = dt.getDate();
let mm = dt.getMonth() + 1;
let yyyy = dt.getFullYear();
if (dd<10) {
dd = '0' + dd;
}
if (mm<10) {
mm = '0' + mm;
}
return yyyy + '-' + mm + '-' + dd;
ใช้รหัสด้านล่าง มันมีประโยชน์สำหรับคุณ
let currentDate = new Date()
currentDate.toISOString()