Я пытаюсь использовать javascript для преобразования объекта date в действительную дату mysql - что это лучший способ сделать это?
Преобразование javascript на сегодняшний день объект в формат даты mysql (ГГГГ-ММ-ДД)
Ответ 1
Вероятно, лучше всего использовать библиотеку, например Date.js (хотя это не поддерживалось в годах) или Moment.js.
Но для этого вручную вы можете использовать Date#getFullYear()
, Date#getMonth()
(он начинается с 0 = Январь, поэтому вы, вероятно, хотите + 1) и Date#getDate()
(день месяца). Просто отложите месяц и день на два символа, например:
(function() {
Date.prototype.toYMD = Date_toYMD;
function Date_toYMD() {
var year, month, day;
year = String(this.getFullYear());
month = String(this.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(this.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
})();
Использование:
var dt = new Date();
var str = dt.toYMD();
Обратите внимание, что функция имеет имя, которое полезно для целей отладки, но из-за анонимной функции определения не существует загрязнения глобального пространства имен.
Это использует локальное время; для UTC используйте только версии UTC (getUTCFullYear
и т.д.).
Предостережение: я просто выбросил это, он полностью не тестировался.
Ответ 2
Чтобы получить дату
new Date().toJSON().slice(0, 10)
//2015-07-23
для свидания
new Date().toJSON().slice(0, 19).replace('T', ' ')
//2015-07-23 11:26:00
Обратите внимание, что итоговая дата/дата и время всегда будут в часовом поясе UTC
Ответ 3
function js2Sql(cDate) {
return cDate.getFullYear()
+ '-'
+ ("0" + (cDate.getMonth()+1)).slice(-2)
+ '-'
+ ("0" + cDate.getDate()).slice(-2);
}
Ответ 4
Это сработало для меня, просто измените строку:
var myDate = new Date();
var myDate_string = myDate.toISOString();
var myDate_string = myDate_string.replace("T"," ");
var myDate_string = myDate_string.substring(0, myDate_string.length - 5);
Ответ 5
Немного опечатки в первом примере, когда день имеет длину меньше 1, он добавляет месяц вместо дня к результату.
Отлично работает, если вы меняете:
if (day.length == 1) {
day = "0" + month;
}
к
if (day.length == 1) {
day = "0" + day;
}
Спасибо за публикацию script.
Исправленная функция выглядит так:
Date.prototype.toYMD = Date_toYMD;
function Date_toYMD() {
var year, month, day;
year = String(this.getFullYear());
month = String(this.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(this.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
Ответ 6
Самая короткая версия fooobar.com/questions/222174/...:
/**
* MySQL date
* @param {Date} [date] Optional date object
* @returns {string}
*/
function mysqlDate(date){
date = date || new Date();
return date.toISOString().split('T')[0];
}
Использование:
var date = mysqlDate(); //'2014-12-05'
Ответ 7
только это:
Object.defineProperties( Date.prototype ,{
date:{
get:function(){return this.toISOString().split('T')[0];}
},
time:{
get:function(){return this.toTimeString().match(/\d{2}:\d{2}:\d{2}/)[0];}
},
datetime:{
get : function(){return this.date+" "+this.time}
}
});
теперь вы можете использовать
sql_query = "...." + (new Date).datetime + "....";
Ответ 8
Мне понадобилось это для имени файла и со временем в текущем часовом поясе.
const timezoneOffset = (new Date()).getTimezoneOffset() * 60000;
const date = (new Date(Date.now() - timezoneOffset))
.toISOString()
.substring(0, 19)
.replace('T', '') // replace T with a space
.replace(/ /g, "_") // replace spaces with an underscore
.replace(/\:/g, "."); // replace colons with a dot
Источник
Ответ 9
От даты JS до преобразования формата даты Mysql вы можете просто сделать это:
date.toISOString().split("T")[0]
Ответ 10
Взгляните на эту удобную библиотеку для всех ваших потребностей форматирования даты: http://blog.stevenlevithan.com/archives/date-time-format
Ответ 11
Может быть!
function Date_toYMD(d)
{
var year, month, day;
year = String(d.getFullYear());
month = String(d.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(d.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
}
Ответ 12
// function
getDate = function(dateObj){
var day = dateObj.getDay() < 9 ? '0'+dateObj.getDay():dateObj.getDay();
var month = dateObj.getMonth() < 9 ? '0'+dateObj.getMonth():dateObj.getMonth();
return dateObj.getFullYear()+'-'+month+'-'+day;
}
// example usage
console.log(getDate(new Date()));
// with custom date
console.log(getDate(new Date(2012,dateObj.getMonth()-30,dateObj.getDay()));
Ответ 13
Попробуй это
dateTimeToMYSQL(datx) {
var d = new Date(datx),
month = '' + (d.getMonth() + 1),
day = d.getDate().toString(),
year = d.getFullYear(),
hours = d.getHours().toString(),
minutes = d.getMinutes().toString(),
secs = d.getSeconds().toString();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
if (hours.length < 2) hours = '0' + hours;
if (minutes.length < 2) minutes = '0' + minutes;
if (secs.length < 2) secs = '0' + secs;
return [year, month, day].join('-') + ' ' + [hours, minutes, secs].join(':');
}
Обратите внимание, что вы можете удалить часы, минуты и секунды, и вы получите результат в виде ГГГГ-ММ-ДД. Преимущество заключается в том, что дата и время, введенные в форму HTML, остаются прежними: без преобразования в UTC
Результатом будет:
dateToMYSQL(datx) {
var d = new Date(datx),
month = '' + (d.getMonth() + 1),
day = d.getDate().toString(),
year = d.getFullYear();
if (month.length < 2) month = '0' + month;
if (day.length < 2) day = '0' + day;
return [year, month, day].join('-');
}