如何将秒转换为日期时间格式?

Posted

技术标签:

【中文标题】如何将秒转换为日期时间格式?【英文标题】:How to convert seconds to datetime format? 【发布时间】:2018-09-29 17:49:42 【问题描述】:

我有这个变量var resetPasswordExpires = 1524133033085;,我想将秒转换为日期时间格式以更新数据库 sql 列。 我这样做了

 var d = new Date();
 d.toString(resetPasswordExpires);

我取 d = 2018 年 4 月 19 日星期四 12:21:02 GMT+0300 (GTB Daylight 时间),当然不能将列保存到数据库。 数据库列格式为 DATETIME

查询:

UPDATE User SET resetPasswordToken = 
c2d313284f6de68cc1f18e3c45b0ea2c720220f0, resetPasswordExpires = Thu Apr 19 
2018 12:21:02 GMT+0300 (GTB Daylight Time) WHERE UserID = 21;

【问题讨论】:

这是从 1900-01-01 开始的秒数吗? @MJH 是的,使用历元计算器在线查看。 怀疑您实际掌握的是自 1970 年 1 月 1 日以来的 毫秒 数。所以我建议的第一件事是,你实际上要弄清楚那个数字 意味着 是/代表什么。 是的,这个数字是 var resetPasswordExpires = Date.now() + 3600000 的结果;我想将此变量保存在数据库中 这不是更多关于如何格式化从 C# 应用程序输出的日期时间值的 C# 问题吗? 【参考方案1】:

一个选项是 DATEADD 到 UNIX 纪元开始的秒数:

SELECT DATEADD(s, 1524133033085/1000, '19700101 00:00:00:000');

19.04.2018 10:17:13

Demo

请注意,我将您的值除以 1000,因为它以毫秒为单位。

【讨论】:

和/或只是添加毫秒而不是秒而不是除以 1000?如果我没记错的话,“dateadd”有一个“ms”选项。 @thomas 我不确定这一点,而且你知道 SO 是怎样的,要么快速发布,要么丢失。 我听到了!刚查了一下,有毫秒、微秒和纳秒选项。【参考方案2】:

测试并解决

如下转换你的时间戳

在控制台中尝试

var resetPasswordExpires = 1524133033085;
var d = new Date();
d.toString(resetPasswordExpires);
var passDateToISOString  = d.toISOString();
passDateToISOString

控制台中的结果

"2018-04-19T09:55:14.824Z"

然后将 passDateToISOString 变量值传递给您的 sql

例如(在 Sql 中尝试

UPDATE User 
SET resetPasswordToken = c2d313284f6de68cc1f18e3c45b0ea2c720220f0, 
resetPasswordExpires = '2018-04-19T09:55:14.824Z' 
WHERE UserID = 21;

【讨论】:

【参考方案3】:

我猜Convert JS date time to mysql datetime 已经回答了这个问题。请验证您的要求。

var resetPasswordExpires = 1524133033085;
var d = new Date(1524133033085).toISOString().slice(0, 19).replace('T', ' ');

【讨论】:

非常感谢!这正是我想要的。

以上是关于如何将秒转换为日期时间格式?的主要内容,如果未能解决你的问题,请参考以下文章

将秒转换为“00:00:00”格式 - SQL Server

如何将秒转换为时间格式? [复制]

将秒转换为天、小时、分钟、秒格式 (C++)

Python将秒转换为 时分秒 的格式

如何将秒转换为R中的日期

js 将秒数转换为时分秒的格式