Sử dụng NodeJS, tôi muốn định dạng a Date
thành định dạng chuỗi sau:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Làm thế nào để làm điều đó?
Sử dụng NodeJS, tôi muốn định dạng a Date
thành định dạng chuỗi sau:
var ts_hms = new Date(UTC);
ts_hms.format("%Y-%m-%d %H:%M:%S");
Làm thế nào để làm điều đó?
Câu trả lời:
Nếu bạn đang sử dụng Node.js, bạn chắc chắn có EcmaScript 5 và vì vậy Date có một toISOString
phương thức. Bạn đang yêu cầu sửa đổi một chút về ISO8601:
new Date().toISOString()
> '2012-11-04T14:51:06.157Z'
Vì vậy, chỉ cần cắt bỏ một số thứ, và bạn đã thiết lập:
new Date().toISOString().
replace(/T/, ' '). // replace T with a space
replace(/\..+/, '') // delete the dot and everything after
> '2012-11-04 14:55:45'
Hoặc, trong một dòng: new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')
ISO8601 nhất thiết phải là UTC (cũng được biểu thị bằng dấu Z ở kết quả đầu tiên), do đó bạn nhận được UTC theo mặc định (luôn luôn là một điều tốt).
Object has no method 'toISOString'
bạn đã bỏ lỡnew
new Date().toISOString().replace('T', ' ').substr(0, 19)
hoạt động tốt.
CẬP NHẬT 2017 / 03-29: Đã thêm ngày-fns, một số ghi chú về Khoảnh khắc và Ngày cập
nhật 2016-09-2014: Đã thêm SugarJS dường như có một số chức năng ngày / giờ tuyệt vời.
OK, vì không ai thực sự cung cấp một câu trả lời thực sự, đây là của tôi.
Một thư viện chắc chắn là đặt cược tốt nhất để xử lý ngày và thời gian theo cách tiêu chuẩn. Có rất nhiều trường hợp cạnh trong tính toán ngày / giờ vì vậy rất hữu ích khi có thể bắt tay phát triển vào thư viện.
Dưới đây là danh sách các thư viện định dạng thời gian tương thích Node chính:
Ngoài ra còn có các thư viện không phải là Node:
Có thư viện để chuyển đổi:
npm install dateformat
Sau đó viết yêu cầu của bạn:
var dateFormat = require('dateformat');
Sau đó ràng buộc giá trị:
var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");
thấy DateFormat
result.request_date
gì
Tôi không có gì chống lại các thư viện nói chung. Trong trường hợp này, một thư viện mục đích chung có vẻ quá mức, trừ khi các phần khác của quy trình ứng dụng ngày rất nhiều.
Viết các hàm tiện ích nhỏ như đây cũng là một bài tập hữu ích cho cả lập trình viên mới bắt đầu và thành đạt như nhau và có thể là một kinh nghiệm học tập cho người mới trong số chúng ta.
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" */
Cách dễ dàng đọc và tùy chỉnh để có dấu thời gian ở định dạng mong muốn của bạn mà không cần sử dụng bất kỳ thư viện nào:
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())
}
(Nếu bạn cần thời gian ở định dạng UTC, thì chỉ cần thay đổi các lệnh gọi hàm. Ví dụ: "getMonth" trở thành "getUTCMonth")
Thư viện javascript sugar.js ( http://sugarjs.com/ ) có các chức năng định dạng ngày
Thí dụ:
Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
Sử dụng phương thức được cung cấp trong đối tượng Date như sau:
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));
Nó trông rất bẩn, nhưng nó sẽ hoạt động tốt với các phương thức lõi của JavaScript
Tôi đang sử dụng DateFormat tại Nodejs và angularjs, vì vậy tốt
Tải về
$ npm install dateformat
$ dateformat --help
bản giới thiệu
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
Thay thế # 6233 ....
Thêm phần bù UTC vào giờ cục bộ, sau đó chuyển đổi nó sang định dạng mong muốn bằng toLocaleDateString()
phương thức của Date
đối tượng:
// 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));
Tôi đang tạo một đối tượng ngày mặc định theo giờ địa phương. Tôi đang thêm UTC tắt cho nó. Tôi đang tạo một đối tượng định dạng ngày. Tôi đang hiển thị ngày / giờ UTC theo định dạng mong muốn:
Sử dụng x-date
mô đun là một trong các mô đun con của thư viện lớp 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(/\..+/, '')
với .toString (), Điều này trở thành định dạng
thay thế (/ T /, ''). // thay T thành '' 2017-01-15T ...
thay thế (/..+/, '') // cho ... 13: 50: 16.1271
ví dụ, xem var date
và 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")
?
Đối với định dạng ngày, cách dễ nhất là sử dụng thời điểm lib. https://momentjs.com/
const moment = require('moment')
const current = moment().utc().format('Y-M-D H:M:S')
toISOString()
vàtoUTCString()
Tôi cần một thư viện định dạng đơn giản mà không có chuông và còi hỗ trợ ngôn ngữ và ngôn ngữ. Vì vậy, tôi đã sửa đổi
http://www.mattkruse.com/javascript/date/date.js
và sử dụng nó. Xem https://github.com/adgang/atom-time/blob/master/lib/dateformat.js
Các tài liệu là khá rõ ràng.
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;
}
Tôi nghĩ rằng điều này thực sự trả lời câu hỏi của bạn.
Thật khó chịu khi làm việc với ngày / giờ trong javascript. Sau một vài sợi tóc màu xám, tôi nhận ra rằng nó thực sự khá đơn giản.
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);