Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-将DD:HH:MM:SS转换为毫秒_Javascript_Time - Fatal编程技术网

Javascript-将DD:HH:MM:SS转换为毫秒

Javascript-将DD:HH:MM:SS转换为毫秒,javascript,time,Javascript,Time,我已经看到了很多转换日期的函数,但是找不到任何关于如何将天:小时:分钟:秒转换为毫秒的具体方法 这是我做的一个基本函数,可以帮助你们。如果您正在编写秒表、时钟或诸如此类的代码,这将非常有用 通常情况下,我看到这是在不使用实用程序函数的情况下内联完成的,但是如果您要创建一个util,就让它具有可扩展性 function convertDhms(d,h,m,s){ d <= 0 ? d=1 : d=d*24*60*60*1000; h <= 0 ? h=1 : h=h

我已经看到了很多转换日期的函数,但是找不到任何关于如何将天:小时:分钟:秒转换为毫秒的具体方法


这是我做的一个基本函数,可以帮助你们。如果您正在编写秒表、时钟或诸如此类的代码,这将非常有用

通常情况下,我看到这是在不使用实用程序函数的情况下内联完成的,但是如果您要创建一个util,就让它具有可扩展性

  function convertDhms(d,h,m,s){
    d <= 0 ? d=1 : d=d*24*60*60*1000;
    h <= 0 ? h=1 : h=h*60*60*1000;
    m <= 0 ? m=1 : m=m*60*1000;
    s <= 0 ? s=1 : s=s*1000;

    return d + h + m + s;
  }
  • 我不同意参数
    Array
    ,很难记住什么代表什么。除非你只做白天/小时/分钟/秒,否则这会让人困惑。此外,除非您总是使用每个参数,否则这将变得很麻烦

  • 零值不正确(对任何值传递0会导致其不正确)

  • const conversionTable={
    秒:1000,
    分钟数:60*1000,
    小时数:60*60*1000,
    天数:24*60*60*1000,
    };
    const convertTime=(opts)=>
    Object.keys(opts).reduce((fin,timeKey)=>(
    fin+选择[timeKey]*可转换[timeKey]
    ), 0)
    console.log(转换时间)({
    天数:5,
    时间:4,,
    会议记录:2,
    秒:19,
    }));
    
    log(convertTime({seconds:1}))我认为一个简单的解决方案是使用Date对象的parse方法,它返回对象的毫秒数。问题是,它的目的是从UNIX时代返回时间

    // see docs for Date constructor
    const baseDate = new Date(0,0,0,0,0,0,0);
    const baseMS = Date.parse(baseDate);
    
    // base milliseconds is not zero
    // it defaults to a day before Jan 1, 1970 in ms
    console.log(baseMS);
    
    function convertToMS(dy,hr,mn,s,ms) {
      const date = new Date(0,0,dy,hr,mn,s,ms);
      const dateMS = Date.parse(date);
      return dateMS - baseMS;
    }
    
    // one day in milliseconds
    console.log(convertToMS(1,0,0,0,0));
    console.log(24 * 60 * 60 * 1000);
    
    p.S.我不太明白为什么所有参数都为零的新日期对象返回一个大的负值,但我们必须在代码中说明这一点


    编辑:由于每个月的天数与每年的天数之间存在差异,因此最好不要在函数
    convertToMS

    的输入中输入年份和月份,这不是显示0天、小时、分钟和秒的4ms吗?是的,任何零输入都会破坏这一点。如果要添加0天、0小时、0分钟和0秒,为什么要使用此选项?:)@如果是
    convertDhms(0,0,0,1)
    打印
    1003
    ,则可以将值0添加到输入。在天、小时、分钟或秒中使用0会使此不准确。。。
    // see docs for Date constructor
    const baseDate = new Date(0,0,0,0,0,0,0);
    const baseMS = Date.parse(baseDate);
    
    // base milliseconds is not zero
    // it defaults to a day before Jan 1, 1970 in ms
    console.log(baseMS);
    
    function convertToMS(dy,hr,mn,s,ms) {
      const date = new Date(0,0,dy,hr,mn,s,ms);
      const dateMS = Date.parse(date);
      return dateMS - baseMS;
    }
    
    // one day in milliseconds
    console.log(convertToMS(1,0,0,0,0));
    console.log(24 * 60 * 60 * 1000);