ใช้ NodeJS ฉันต้องการจัดรูปแบบเป็นDate
รูปแบบสตริงต่อไปนี้:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
ฉันจะทำอย่างไร
ใช้ NodeJS ฉันต้องการจัดรูปแบบเป็นDate
รูปแบบสตริงต่อไปนี้:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
ฉันจะทำอย่างไร
คำตอบ:
หากคุณใช้ Node.js คุณต้องแน่ใจว่าได้ใช้ EcmaScript 5 และ Date มีtoISOString
วิธีการ คุณกำลังขอการปรับเปลี่ยนเล็กน้อยของ ISO8601:
new Date().toISOString()
> '2012-11-04T14:51:06.157Z'
ดังนั้นตัดสิ่งเล็ก ๆ น้อย ๆ ออกไปแล้วคุณก็พร้อม:
new Date().toISOString().
replace(/T/, ' '). // replace T with a space
replace(/\..+/, '') // delete the dot and everything after
> '2012-11-04 14:55:45'
หรือในหนึ่งบรรทัด: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')
ISO8601 นั้นจำเป็นต้องมี UTC (ตามด้วย Z ต่อท้ายในผลลัพธ์แรก) ดังนั้นคุณจะได้รับ UTC โดยค่าเริ่มต้น (เป็นสิ่งที่ดีเสมอ)
Object has no method 'toISOString'
คุณพลาดnew
new Date().toISOString().replace('T', ' ').substr(0, 19)
ใช้ได้ดี
UPDATE 2017-03-29: เพิ่ม date-fns, บันทึกบางอย่างเกี่ยวกับ Moment และ Datejs
UPDATE 2016-09-14: เพิ่ม SugarJS ซึ่งดูเหมือนว่าจะมีฟังก์ชั่นวันที่ / เวลาที่ยอดเยี่ยม
ตกลงเนื่องจากไม่มีใครให้คำตอบจริงนี่คือของฉัน
ห้องสมุดเป็นทางออกที่ดีที่สุดสำหรับการจัดการวันที่และเวลาอย่างเป็นมาตรฐาน มีกรณีขอบจำนวนมากในการคำนวณวันที่ / เวลาดังนั้นจึงเป็นประโยชน์ที่จะสามารถส่งการพัฒนาไปยังไลบรารี
นี่คือรายการของไลบรารีการจัดรูปแบบเวลาที่เข้ากันได้ของโหนดหลัก:
นอกจากนี้ยังมีไลบรารีที่ไม่ใช่โหนด:
มีห้องสมุดสำหรับการแปลง:
npm install dateformat
จากนั้นเขียนความต้องการของคุณ:
var dateFormat = require('dateformat');
จากนั้นผูกค่า:
var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");
result.request_date
อะไร
ฉันไม่มีอะไรที่ต่อต้านห้องสมุดโดยทั่วไป ในกรณีนี้ไลบรารีวัตถุประสงค์ทั่วไปดูเหมือนว่ามีราคาเกินจริงเว้นแต่ว่าส่วนอื่น ๆ ของกระบวนการแอปพลิเคชันมีวันที่อย่างหนัก
การเขียนฟังก์ชั่นยูทิลิตี้ขนาดเล็กเช่นนี้ก็เป็นแบบฝึกหัดที่มีประโยชน์สำหรับทั้งผู้เริ่มต้นและโปรแกรมเมอร์ที่ประสบความสำเร็จเหมือนกันและสามารถเป็นประสบการณ์การเรียนรู้สำหรับสามเณรในหมู่พวกเรา
function dateFormat (date, fstr, utc) {
utc = utc ? 'getUTC' : 'get';
return fstr.replace (/%[YmdHMS]/g, function (m) {
switch (m) {
case '%Y': return date[utc + 'FullYear'] (); // no leading zeros required
case '%m': m = 1 + date[utc + 'Month'] (); break;
case '%d': m = date[utc + 'Date'] (); break;
case '%H': m = date[utc + 'Hours'] (); break;
case '%M': m = date[utc + 'Minutes'] (); break;
case '%S': m = date[utc + 'Seconds'] (); break;
default: return m.slice (1); // unknown code, remove %
}
// add leading zero if required
return ('0' + m).slice (-2);
});
}
/* dateFormat (new Date (), "%Y-%m-%d %H:%M:%S", true) returns
"2012-05-18 05:37:21" */
วิธีที่สามารถอ่านและปรับแต่งได้อย่างง่ายดายเพื่อรับการประทับเวลาในรูปแบบที่คุณต้องการโดยไม่ต้องใช้ห้องสมุด:
function timestamp(){
function pad(n) {return n<10 ? "0"+n : n}
d=new Date()
dash="-"
colon=":"
return d.getFullYear()+dash+
pad(d.getMonth()+1)+dash+
pad(d.getDate())+" "+
pad(d.getHours())+colon+
pad(d.getMinutes())+colon+
pad(d.getSeconds())
}
(หากคุณต้องการเวลาในรูปแบบ UTC จากนั้นเพียงแค่เปลี่ยนการเรียกฟังก์ชันตัวอย่างเช่น "getMonth" กลายเป็น "getUTCMonth")
ไลบรารี javascript sugar.js ( http://sugarjs.com/ ) มีฟังก์ชันเพื่อจัดรูปแบบวันที่
ตัวอย่าง:
Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
ใช้วิธีการที่ให้ไว้ในวัตถุวันที่ดังต่อไปนี้:
var ts_hms = new Date();
console.log(
ts_hms.getFullYear() + '-' +
("0" + (ts_hms.getMonth() + 1)).slice(-2) + '-' +
("0" + (ts_hms.getDate())).slice(-2) + ' ' +
("0" + ts_hms.getHours()).slice(-2) + ':' +
("0" + ts_hms.getMinutes()).slice(-2) + ':' +
("0" + ts_hms.getSeconds()).slice(-2));
มันดูสกปรกจริงๆ แต่ควรใช้งานได้ดีกับวิธีการหลักของ JavaScript
ฉันใช้Dateformatที่ Nodejs และ angularjs ดังนั้นดี
ติดตั้ง
$ npm install dateformat
$ dateformat --help
การสาธิต
var dateFormat = require('dateformat');
var now = new Date();
// Basic usage
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
// Saturday, June 9th, 2007, 5:46:21 PM
// You can use one of several named masks
dateFormat(now, "isoDateTime");
// 2007-06-09T17:46:21
// ...Or add your own
dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"';
dateFormat(now, "hammerTime");
// 17:46! Can't touch this!
// You can also provide the date as a string
dateFormat("Jun 9 2007", "fullDate");
// Saturday, June 9, 2007
...
new Date(2015,1,3,15,30).toLocaleString()
//=> 2015-02-03 15:30:00
3.2.2015, 15:30:00
ทางเลือก # 6233 ....
เพิ่ม UTC offset เป็นเวลาท้องถิ่นจากนั้นแปลงเป็นรูปแบบที่ต้องการด้วยtoLocaleDateString()
วิธีการของDate
วัตถุ:
// Using the current date/time
let now_local = new Date();
let now_utc = new Date();
// Adding the UTC offset to create the UTC date/time
now_utc.setMinutes(now_utc.getMinutes() + now_utc.getTimezoneOffset())
// Specify the format you want
let date_format = {};
date_format.year = 'numeric';
date_format.month = 'numeric';
date_format.day = '2-digit';
date_format.hour = 'numeric';
date_format.minute = 'numeric';
date_format.second = 'numeric';
// Printing the date/time in UTC then local format
console.log('Date in UTC: ', now_utc.toLocaleDateString('us-EN', date_format));
console.log('Date in LOC: ', now_local.toLocaleDateString('us-EN', date_format));
ฉันสร้างวัตถุวันที่ที่เป็นค่าเริ่มต้นตามเวลาท้องถิ่น ฉันกำลังเพิ่ม UTC ออกไป ฉันกำลังสร้างวัตถุการจัดรูปแบบวันที่ ฉันกำลังแสดงวันที่ / เวลา UTC ในรูปแบบที่ต้องการ:
ใช้x-date
โมดูลซึ่งเป็นหนึ่งในโมดูลย่อยของx ชั้นห้องสมุด ;
require('x-date') ;
//---
new Date().format('yyyy-mm-dd HH:MM:ss')
//'2016-07-17 18:12:37'
new Date().format('ddd , yyyy-mm-dd HH:MM:ss')
// 'Sun , 2016-07-17 18:12:51'
new Date().format('dddd , yyyy-mm-dd HH:MM:ss')
//'Sunday , 2016-07-17 18:12:58'
new Date().format('dddd ddSS of mmm , yy')
// 'Sunday 17thth +0300f Jul , 16'
new Date().format('dddd ddS mmm , yy')
//'Sunday 17th Jul , 16'
new Date().toString("yyyyMMddHHmmss").
replace(/T/, ' ').
replace(/\..+/, '')
ด้วย. toString () ซึ่งจะอยู่ในรูปแบบ
แทนที่ (/ T /, '') // แทนที่ T เป็น '' 2017-01-15T ...
แทนที่ (/..+/, '') // สำหรับ ... 13: 50: 16.1271
ตัวอย่างดู var date
และhour
:
var date="2017-01-15T13:50:16.1271".toString("yyyyMMddHHmmss").
replace(/T/, ' ').
replace(/\..+/, '');
var auxCopia=date.split(" ");
date=auxCopia[0];
var hour=auxCopia[1];
console.log(date);
console.log(hour);
.toString("yyyyMMddHHmmss")
?
สำหรับการจัดรูปแบบวันที่วิธีที่ง่ายที่สุดคือการใช้ lib ขณะนี้ https://momentjs.com/
const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
toISOString()
และtoUTCString()
ฉันต้องการไลบรารีการจัดรูปแบบที่เรียบง่ายโดยไม่มีเสียงระฆังและเสียงนกหวีดของภาษาและการสนับสนุน ดังนั้นฉันจึงแก้ไข
http://www.mattkruse.com/javascript/date/date.js
และใช้มัน ดูhttps://github.com/adgang/atom-time/blob/master/lib/dateformat.js
เอกสารประกอบค่อนข้างชัดเจน
appHelper.validateDates = function (start, end) {
var returnval = false;
var fd = new Date(start);
var fdms = fd.getTime();
var ed = new Date(end);
var edms = ed.getTime();
var cd = new Date();
var cdms = cd.getTime();
if (fdms >= edms) {
returnval = false;
console.log("step 1");
}
else if (cdms >= edms) {
returnval = false;
console.log("step 2");
}
else {
returnval = true;
console.log("step 3");
}
console.log("vall", returnval)
return returnval;
}
ตรวจสอบรหัสด้านล่างและลิงค์ไปยังMDN
// var ts_hms = new Date(UTC);
// ts_hms.format("%Y-%m-%d %H:%M:%S")
// exact format
console.log(new Date().toISOString().replace('T', ' ').substring(0, 19))
// other formats
console.log(new Date().toUTCString())
console.log(new Date().toLocaleString('en-US'))
console.log(new Date().toString())
ฉันคิดว่านี่จริงตอบคำถามของคุณ
มันน่ารำคาญมากที่ทำงานกับวันที่ / เวลาใน javascript หลังจากผมหงอกสองสามเส้นฉันก็พบว่ามันง่ายจริงๆ
var date = new Date();
var year = date.getUTCFullYear();
var month = date.getUTCMonth();
var day = date.getUTCDate();
var hours = date.getUTCHours();
var min = date.getUTCMinutes();
var sec = date.getUTCSeconds();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = ((hours + 11) % 12 + 1);//for 12 hour format
var str = month + "/" + day + "/" + year + " " + hours + ":" + min + ":" + sec + " " + ampm;
var now_utc = Date.UTC(str);