怎么从 javascript 到 mysql 读取和存储日期时间
本教程将介绍如何从 javascript 到 mysql 读取和存储日期时间的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
我正在构建一个应用程序 node.js,用户在其中创建一个记录,其中包含一个名为游览日期和时间的字段.我正在使用 daterangepicker 插件来显示日期和时间下拉窗口.一旦用户保存记录,它就会作为日期时间字段保存在 MySQL 表中.
然后我使用 fullcalendar 来显示给定月份-年份的所有旅行日期.
但这就是问题所在.假设我选择 28/11/2018 下午 6: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
});
我没有为 daterangepicker 或 momentjs 设置任何时区.我从表单中获得的日期时间(在保存到数据库之前)是相同的.即它在 2018-11-28 18:30 出现.
但是在保存到数据库时,它会保存为
2018-11-28 01:00:00
它将 +06:30(IST,印度标准时间值)添加到传入的日期时间字段.
因此,当我打开日历时,日期正确(28/11/2018)但时间不正确.用户保存了期望时间为下午 6.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
});
我想要做的是无论用户在哪个时区.我想将给定的日期和时间按原样保存在数据库中并按原样检索它,以显示在日历中.
我怎么做到这一点?
推荐答案
如果你是通过sequelize存储日期,那么它会将日期存储为UTC,
所以从前端只需传递 UTC 中的日期,这样它就会被存储如果您使用日期时间选择器,它会自动将 UTC 转换为您的时区,只需将 UTC 数据传递给您的插件.
通过时只需使用 UTC 即可.
好了关于怎么从 javascript 到 mysql 读取和存储日期时间的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。