将小时和分钟字符串转换为纪元(unix 时间戳)
Posted
技术标签:
【中文标题】将小时和分钟字符串转换为纪元(unix 时间戳)【英文标题】:turn hour and minute strings into epoch (unix timestamp) 【发布时间】:2021-12-18 08:29:51 【问题描述】:我的数据库表中有用户输入的hour
和minute
。所以它可能是小时=18,分钟=24。我需要将这两个转换 - 基本上是 18:24 到 epoch
。
我尝试过:
let hour = "20"
let minute = "55"
let myTime = hour + ":" + minute
const timestamp2 = epoch(myTime)
但它是 NaN。如果这是可能的,有什么想法吗?
【问题讨论】:
【参考方案1】:一个小时和分钟不足以获得一个unix时间戳,你还需要年、月、日、秒和毫秒。无论如何,如果您打算使用当前日期作为这些值的基准,您可以执行以下操作:
const hour = "20";
const minute = "55";
const date = new Date();
date.setHours(hour);
date.setMinutes(minute);
const timestamp = date.getTime();
【讨论】:
【参考方案2】:epoch time 是从或到 1970 年 1 月 1 日 00:00:00 UTC 的毫秒数(这是 Unix epoch,其日历的零点)。
没有日期的时间,例如 20:55,没有锚定,因此无法转换为纪元时间。
您可以转换为从一天开始的偏移量(以毫秒为单位),在一天开始时获取某个特定日期的纪元时间,然后将两个值相加。
function offsetFromStartOfDayInMilliseconds( h = 0 , m = 0 , s = 0 , ms = 0 )
let offset = 0;
offset += h * MS_PER_HR;
offset += m * MS_PER_MIN;
offset += s * MS_PER_SEC;
offset += ms * MS_PER_MS;
return offset;
const MS_PER_MS = 1;
const MS_PER_SEC = 1000;
const MS_PER_MIN = 60 * MS_PER_SEC;
const MS_PER_HOUR = 60 * MS_PER_MIN;
【讨论】:
以上是关于将小时和分钟字符串转换为纪元(unix 时间戳)的主要内容,如果未能解决你的问题,请参考以下文章
使用 sql 将字符串纪元代码从 unix 时间戳转换为日期
Unix 纪元时间戳在 Python 中转换为 UTC 时区
将记录的日期时间转换为 UNIX 纪元时间戳的 Perl 脚本