为什么新的date()不接受字符串并给出无效日期?

时间:2018-05-18 07:07:54

标签: javascript function date

Javascript:我有一个函数有s参数s包含这个s=07:05:45PM; s的时间是字符串形式我想在new Date()中使用它但是给出了错误我有得到小时分钟秒将此时间转换为24小时格式请帮我输出:无效日期

function time Conversion(s) { 
   var date=new Date(s);    
   console.log(date); 
}

4 个答案:

答案 0 :(得分:2)

根据specification,您可以将dateString作为参数传递给Date构造函数。有很多dateString格式限制,在您的情况下,dateString(名为s)对于日期构造函数无效(实际上,您的s甚至没有日期,它只包括时间。)

可能的解决方案是手动处理您的s参数:剪切口头部分,将时间分割为:,然后将序列传递给序列Date中的year, month, date, hours, minutes, seconds构造函数,或构建您自己的ISO String格式:

{year}-{month}-{date}T{hours}:{minutes}:{seconds}.{milliseconds}Z

请注意,两种情况下的小时数应为24小时格式,因此您应手动处理12小时格式化的小时。

答案 1 :(得分:1)

Why does Date.parse give incorrect results?

涵盖您从内置解析器获取无效日期的原因

要将字符串转换为07:05:45 PM到24小时,您可以解析部分并生成一个新字符串,如果它在PM结束时添加12小时,如果它在AM结束则更新12(并且更改为12am到00)。 e.g。

function to24HrFormat(s) {
  var z = n => (n<10?'0':'')+n;
  var b = s.match(/\d+/g);
  var ap = /am$/i.test(s)? 0 : 12;
  return z((b[0]%12) + ap) + ':' + b[1] + ':' + b[2];
}

// Tests
['07:05:45PM', '06:23:49AM', '12:15:00AM', '11:59:59pm']
  .forEach(s => console.log(s + ' => ' + to24HrFormat(s)));

您应该验证输入字符串,并且可能允许丢失秒数。

答案 2 :(得分:0)

从时间字符串中删除AM / PM(需要24小时字符串)

var time = "07:05:45";
var datetime = new Date('1970-01-01T' + time + 'Z');

现在进行基于时间的操作。

答案 3 :(得分:-1)

请尝试使用.SimpleTable-head-2 { //Code you already have z-index: 3; } .MuiButton-sizeSmall-31 { z-index: 1; } 。请参阅referene