将小时和分钟字符串转换为纪元(unix 时间戳)

Posted

技术标签:

【中文标题】将小时和分钟字符串转换为纪元(unix 时间戳)【英文标题】:turn hour and minute strings into epoch (unix timestamp) 【发布时间】:2021-12-18 08:29:51 【问题描述】:

我的数据库表中有用户输入的hourminute。所以它可能是小时=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 纪元时间戳转换为实际日期/时间

Unix 纪元时间戳在 Python 中转换为 UTC 时区

将记录的日期时间转换为 UNIX 纪元时间戳的 Perl 脚本

如何在 kotlin 中将纪元时间戳转换为 unix 十六进制时间戳?

将 UNIX 纪元转换为日期对象