Я создаю приложение node.js, где пользователь создает запись с полем с именем даты и времени тура.Я использую плагин daterangepicker для отображения выпадающего окна даты и времени.Как только пользователь сохраняет запись, она сохраняется в таблице MySQL как поле даты и времени.
Затем я использую fullcalendar , чтобы отобразить все даты тура для данного месяца-года.
Но здесь есть проблема.Допустим, я выбрал 28/11/2018 18:30 в качестве даты и времени тура.В средстве выбора даты он сохраняется как
2018-11-28 18: 30
$('input#tour_date').daterangepicker({
singleDatePicker: true,
showDropdowns: true,
timePicker: true,
timePickerIncrement: 30,
locale: {
format: 'DD/MM/YYYY hh:mm A'
}
}, function (chosendate) {
$('input[name="tour_date"]').val(moment(chosendate).format('YYYY-MM-DD hh:mm'));
//the value for input becomes 2018-11-28 18:30
});
Я не установил часовой пояс для устройства выбора даты или моментов.Дата и время, которое я получаю из формы (до сохранения в базе данных), совпадают.то есть он поступает как 2018-11-28 18: 30.
Однако при сохранении в базу данных он сохраняется как
2018-11-28 01:00:00
Добавляется +06: 30 (IST, индийскийСтандартное время) в поле входящей даты и времени.
Поэтому, когда я открываю свой календарь, дата правильная (28/11/2018), но время неверное.Пользователь сохранил поле, ожидая, что время будет 18:30, но вместо этого увидит 01: 00
. Я сохраняю дату и время как
var tourDate = new Date(req.body.tour_date).toISOString();
. Я использую Sequelize ORM, и я не дал никакихконкретный часовой пояс.
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
host: process.env.DB_HOST,
port: 3306,
dialect: 'mysql',
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000
},
logging: false
});
То, что я хочу сделать, не имеет значения, в каком часовом поясе присутствует пользователь. Я хочу сохранить указанную дату и время, как есть, в базе данных и извлечь их как есть, чтобы они отображались вкалендарь.
Как мне этого добиться?