嗨我想根据东部时间保存日期和时间,我的续集模型是:
var objName= sequelize.define('tbl_name',{
orders_id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
customers_id:Sequelize.INTEGER,
date_purchased: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
order_total:Sequelize.INTEGER,
},
{
tableName: 'tbl_name',
timestamps: false
});
现在我想以某种方式使用时间戳并希望保存(东部标准时间),有人可以指导我如何做到这一点。
注意:我正在使用mysql和sailsjs。 感谢。
修改
还使用了以下两个代码段,但随后又保存了0000-00-00 00:00:00
date_purchased: { type: Sequelize.DATE, defaultValue: sequelize.literal("FROM_UNIXTIME(UNIX_TIMESTAMP() + (3600 * 2))") },
date_purchased: { type: Sequelize.DATE, defaultValue: sequelize.literal("(now() at time zone 'EST')") }
答案 0 :(得分:1)
您是否想要操纵日期(加,减,比较)?如果不是,那么只需将它们保存为预格式化的字符串。
否则你会遇到这种保存方式的问题"东部时间"超出风帆。请记住,eastertay与UTC相同,只是有一个偏移量,这个偏移量会根据您在夏令时的节省而改变。
默认情况下,MySQL将在内部使用系统时区,但可以在全局甚至每个事务中为MySQL服务器定义不同的时区。但是,MYSQL仍然会节省UTC的时间,所有你所知道的MYSQL都是在读/写期间进行转换,就像我们在东部时区一样。
在处理许多变量(例如应用程序服务器,数据库适配器以及最后的数据库)时,这可能很棘手。
最安全的做法是将所有日期保存为UTC(在UTC系统时间内设置服务器),然后通过应用程序层在正确的时区显示它们。
你必须问自己。 "我的约会来自"。它们都是在数据库本身内生成的(就像上面的代码一样)?它们是由应用程序服务器生成的(例如sails创建日期然后插入它),还是日期来自客户端(浏览器有自己的时区问题)。
如果您确实想要操作/比较它们,那么最好确保您的日期保存UTC,然后在向用户显示时操纵时区。考虑夏令时(这个周末会改变!)。
如何完成此操作将取决于您的设置并回答我上面发布的许多问题。
我知道我之前停止使用日期/时间方法,而是使用整数来存储我的所有日期与UnixTimestamp。然后我在显示给客户端之前将其格式化为正确的时区。这样可以确保无论使用何种数据库或服务器位于何处,我的日期都不会被过度转换。这只是个人偏好,但我发现它引起了很大的麻烦。