【问题标题】:turn hour and minute strings into epoch (unix timestamp)将小时和分钟字符串转换为纪元(unix 时间戳)
【发布时间】: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。如果这是可能的,有什么想法吗?

【问题讨论】:

    标签: javascript node.js unix unix-timestamp epoch


    【解决方案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;
      
      

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 2023-02-26
        • 2018-01-27
        • 2018-08-03
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 2013-01-08
        相关资源
        最近更新 更多