Jawaban:
Meskipun JS memiliki alat dasar yang cukup untuk melakukan ini, JS cukup kikuk.
/**
* You first need to create a formatting function to pad numbers to two digits…
**/
function twoDigits(d) {
if(0 <= d && d < 10) return "0" + d.toString();
if(-10 < d && d < 0) return "-0" + (-1*d).toString();
return d.toString();
}
/**
* …and then create the method to output the date string as desired.
* Some people hate using prototypes this way, but if you are going
* to apply this to more than one Date object, having it as a prototype
* makes sense.
**/
Date.prototype.toMysqlFormat = function() {
return this.getUTCFullYear() + "-" + twoDigits(1 + this.getUTCMonth()) + "-" + twoDigits(this.getUTCDate()) + " " + twoDigits(this.getUTCHours()) + ":" + twoDigits(this.getUTCMinutes()) + ":" + twoDigits(this.getUTCSeconds());
};
Date
objek. new Date().toMysqlFormat()
atau new Date(2014,12,14).toMysqlFormat()
atau apapun.
toISOString
.
var date;
date = new Date();
date = date.getUTCFullYear() + '-' +
('00' + (date.getUTCMonth()+1)).slice(-2) + '-' +
('00' + date.getUTCDate()).slice(-2) + ' ' +
('00' + date.getUTCHours()).slice(-2) + ':' +
('00' + date.getUTCMinutes()).slice(-2) + ':' +
('00' + date.getUTCSeconds()).slice(-2);
console.log(date);
atau bahkan lebih pendek:
new Date().toISOString().slice(0, 19).replace('T', ' ');
Keluaran:
2012-06-22 05:40:06
Untuk kasus penggunaan yang lebih lanjut, termasuk mengontrol zona waktu, pertimbangkan untuk menggunakan http://momentjs.com/ :
require('moment')().format('YYYY-MM-DD HH:mm:ss');
Untuk alternatif yang ringan momentjs, pertimbangkan https://github.com/taylorhakes/fecha
require('fecha').format('YYYY-MM-DD HH:mm:ss')
var d = new Date(); d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
Saya pikir solusinya bisa kurang kikuk dengan menggunakan metode toISOString()
, ia memiliki kompatibilitas browser yang luas.
Jadi ekspresi Anda akan menjadi satu baris:
new Date().toISOString().slice(0, 19).replace('T', ' ');
Output yang dihasilkan:
"2017-06-29 17:54:04"
new Date(1091040026000).toISOString().slice(0, 19).replace('T', ' ');
Date
's offset zona waktu . Sedangkan milik Anda mengembalikan waktu UTC yang mendasari dalam format MySQL DATETIME. Dalam kebanyakan kasus, menyimpan UTC mungkin lebih baik, dan dalam kedua kasus tabel data Anda mungkin harus memberikan info lokasi dalam satu bidang. Alternatifnya, untuk mengubah ke waktu lokal cukup mudah: gunakan ... - Date.getTimezoneOffset() * 60 * 1000
(NB juga menyesuaikan untuk Waktu Musim Panas jika berlaku).
Nilai waktu JS untuk MySQL
var datetime = new Date().toLocaleString();
ATAU
const DATE_FORMATER = require( 'dateformat' );
var datetime = DATE_FORMATER( new Date(), "yyyy-mm-dd HH:MM:ss" );
ATAU
const MOMENT= require( 'moment' );
let datetime = MOMENT().format( 'YYYY-MM-DD HH:mm:ss.000' );
Anda dapat mengirim ini di params ini akan berhasil.
Untuk string tanggal arbitrer,
// Your default date object
var starttime = new Date();
// Get the iso time (GMT 0 == UTC 0)
var isotime = new Date((new Date(starttime)).toISOString() );
// getTime() is the unix time value, in milliseconds.
// getTimezoneOffset() is UTC time and local time in minutes.
// 60000 = 60*1000 converts getTimezoneOffset() from minutes to milliseconds.
var fixedtime = new Date(isotime.getTime()-(starttime.getTimezoneOffset()*60000));
// toISOString() is always 24 characters long: YYYY-MM-DDTHH:mm:ss.sssZ.
// .slice(0, 19) removes the last 5 chars, ".sssZ",which is (UTC offset).
// .replace('T', ' ') removes the pad between the date and time.
var formatedMysqlString = fixedtime.toISOString().slice(0, 19).replace('T', ' ');
console.log( formatedMysqlString );
Atau solusi satu baris,
var formatedMysqlString = (new Date ((new Date((new Date(new Date())).toISOString() )).getTime() - ((new Date()).getTimezoneOffset()*60000))).toISOString().slice(0, 19).replace('T', ' ');
console.log( formatedMysqlString );
Solusi ini juga berfungsi untuk Node.js saat menggunakan Timestamp di mysql.
Jawaban pertama @Gajus Kuizinas tampaknya memodifikasi prototipe toISOString mozilla
Pustaka DateJS yang terhormat memiliki rutinitas pemformatan (itu menggantikan ".toString ()"). Anda juga dapat melakukannya sendiri dengan mudah karena metode "Tanggal" memberikan semua nomor yang Anda butuhkan.
Solusi lengkap (untuk mempertahankan zona waktu) menggunakan konsep jawaban @Gajus:
var d = new Date(),
finalDate = d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
console.log(finalDate); //2018-09-28 16:19:34 --example output
Tanggal baru (). toISOString (). slice (0, 10) + "" + Tanggal baru (). toLocaleTimeString ('en-GB');
100% bekerja
Saya telah memberikan contoh format tanggal JavaScript sederhana, silakan periksa kode di bawah ini
var data = new Date($.now()); // without jquery remove this $.now()
console.log(data)// Thu Jun 23 2016 15:48:24 GMT+0530 (IST)
var d = new Date,
dformat = [d.getFullYear() ,d.getMonth()+1,
d.getDate()
].join('-')+' '+
[d.getHours(),
d.getMinutes(),
d.getSeconds()].join(':');
console.log(dformat) //2016-6-23 15:54:16
Menggunakan momentjs
var date = moment().format('YYYY-MM-DD H:mm:ss');
console.log(date) // 2016-06-23 15:59:08
Contoh silahkan cek https://jsfiddle.net/sjy3vjwm/2/
Cara termudah yang benar untuk mengonversi JS Date ke format SQL datetime yang terjadi pada saya adalah yang ini. Ini menangani offset zona waktu dengan benar.
const toSqlDatetime = (inputDate) => {
const date = new Date(inputDate)
const dateWithOffest = new Date(date.getTime() - (date.getTimezoneOffset() * 60000))
return dateWithOffest
.toISOString()
.slice(0, 19)
.replace('T', ' ')
}
toSqlDatetime(new Date()) // 2019-08-07 11:58:57
toSqlDatetime(new Date('2016-6-23 1:54:16')) // 2016-06-23 01:54:16
Berhati-hatilah karena jawaban @Paulo Roberto akan memberikan hasil yang salah pada saat pergantian hari (saya tidak bisa meninggalkan komentar). Contoh :
var d = new Date('2016-6-23 1:54:16'),
finalDate = d.toISOString().split('T')[0]+' '+d.toTimeString().split(' ')[0];
console.log(finalDate); // 2016-06-22 01:54:16
Kami punya 22 Juni, bukan 23!
var _t = new Date();
jika Anda ingin format UTC sederhana
_t.toLocaleString('indian', { timeZone: 'UTC' }).replace(/(\w+)\/(\w+)\/(\w+), (\w+)/, '$3-$2-$1 $4');
atau
_t.toISOString().slice(0, 19).replace('T', ' ');
dan jika ingin di zona waktu tertentu
_t.toLocaleString('indian', { timeZone: 'asia/kolkata' }).replace(/(\w+)\/(\w+)\/(\w+), (\w+)/, '$3-$2-$1 $4');
Saya menggunakan waktu yang lama ini dan ini sangat membantu saya, gunakan sesuka Anda
Date.prototype.date=function() {
return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')
}
Date.prototype.time=function() {
return String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}
Date.prototype.dateTime=function() {
return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')+' '+String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}
Date.prototype.addTime=function(time) {
var time=time.split(":")
var rd=new Date(this.setHours(this.getHours()+parseInt(time[0])))
rd=new Date(rd.setMinutes(rd.getMinutes()+parseInt(time[1])))
return new Date(rd.setSeconds(rd.getSeconds()+parseInt(time[2])))
}
Date.prototype.addDate=function(time) {
var time=time.split("-")
var rd=new Date(this.setFullYear(this.getFullYear()+parseInt(time[0])))
rd=new Date(rd.setMonth(rd.getMonth()+parseInt(time[1])))
return new Date(rd.setDate(rd.getDate()+parseInt(time[2])))
}
Date.prototype.subDate=function(time) {
var time=time.split("-")
var rd=new Date(this.setFullYear(this.getFullYear()-parseInt(time[0])))
rd=new Date(rd.setMonth(rd.getMonth()-parseInt(time[1])))
return new Date(rd.setDate(rd.getDate()-parseInt(time[2])))
}
dan kemudian:
new Date().date()
yang mengembalikan tanggal sekarang dalam 'format MySQL'
untuk menambah waktu adalah
new Date().addTime('0:30:0')
yang akan menambah 30 menit .... dan seterusnya