Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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从年月日到年月日_Javascript - Fatal编程技术网

javascript从年月日到年月日

javascript从年月日到年月日,javascript,Javascript,我有一个格式为dd/m/yyyyy(如果月份小于10)的日期,我希望将其转换为此日期dd/mm/yyyyy,无论该月的值是多少 谢谢。var month=“00”; var month = "00"; if (month < 10) month = "0" + month; 如果(月

我有一个格式为
dd/m/yyyyy
(如果月份小于10)的日期,我希望将其转换为此日期
dd/mm/yyyyy
,无论该月的值是多少

谢谢。

var month=“00”;
var month = "00";

if (month < 10) month = "0" + month;
如果(月<10)月=“0”+月;
var month=“00”;
如果(月<10)月=“0”+月;

这显然不是一个非常健壮的解决方案,但如果这只是一个需要解决的小问题,它将为此发挥作用。对于更一般的日期格式,我建议您使用JavaScript库来执行类似或的操作

这显然不是一个非常健壮的解决方案,但如果这只是一个需要解决的小问题,它将为此发挥作用。对于更通用的日期格式,我建议您使用JavaScript库来执行此操作,如或。

“12/9/2011”。替换(/\/(\d\d?)\//,函数(a,月){
返回“/”+(parseInt(月,10)<10?“0”+月:月)+“/”;
});
“12/9/2011”。替换(/\/(\d\d?)\//,功能(a,月){
返回“/”+(parseInt(月,10)<10?“0”+月:月)+“/”;
});

JavaScipt日期API有点麻烦。我将.split('/')得到dd、m和yyy。作为字符串。然后使用parseInteger(x,10)从中生成数字(需要,10,以便将一个月09视为十进制9,而不是无效的八进制9)。然后你可以从那里做一条新的填充线。(或新日期()-但请注意,日期和月份是以0为基础的!)


不幸的是,如果要将日期格式化为字符串,则需要自己填充。例如,请参见

JavaScipt日期API有点麻烦。我将.split('/')得到dd、m和yyy。作为字符串。然后使用parseInteger(x,10)从中生成数字(需要,10,以便将一个月09视为十进制9,而不是无效的八进制9)。然后你可以从那里做一条新的填充线。(或新日期()-但请注意,日期和月份是以0为基础的!)


不幸的是,如果要将日期格式化为字符串,则需要自己填充。请参阅,例如

如果您知道字符串的格式与您发布的格式完全相同,那么这里有一个简单的解决方案:

s = s.replace(/\/(\d)\//, '/0$1/');
当然,您可能需要检查
d/m/yyyy
,或者
d/mm/yyyy

在这种情况下,另一种选择是:

s = s.replace(/\b\d\b/g, '0$&');
同样,假设日期是整个字符串,而不是其中的一部分。模式如下:

  • \b\d\b
    -一个完整单词的数字(由非字母数字字符或字符串边缘包裹)
  • /g
    -全局替换,因为我们可能有两个匹配项
  • 0$&
    -在整个匹配中添加一个零

如果您知道字符串的格式与您发布的格式完全相同,那么这里有一个简单的解决方案:

s = s.replace(/\/(\d)\//, '/0$1/');
当然,您可能需要检查
d/m/yyyy
,或者
d/mm/yyyy

在这种情况下,另一种选择是:

s = s.replace(/\b\d\b/g, '0$&');
同样,假设日期是整个字符串,而不是其中的一部分。模式如下:

  • \b\d\b
    -一个完整单词的数字(由非字母数字字符或字符串边缘包裹)
  • /g
    -全局替换,因为我们可能有两个匹配项
  • 0$&
    -在整个匹配中添加一个零
试试这个:

function normalizeDate(input) {
  var parts = input.split('/');
  return (parts[0] < 10 ? '0' : '')
    + parseInt(parts[0]) + '/'
    + (parts[1] < 10 ? '0' : '')
    + parseInt(parts[1]) + '/'
    + parseInt(parts[2]);
}

alert(normalizeDate('2/3/2000')); //alerts "02/03/2000"
alert(normalizeDate('12/11/2000')); //alerts "12/11/2000"
alert(normalizeDate('12/7/2000')); //alerts "12/07/2000"
函数规格化(输入){
var parts=input.split('/');
返回(部分[0]<10?'0':'')
+parseInt(部分[0])+'/'
+(第[1]部分<10?'0':'')
+parseInt(parts[1])+'/'
+parseInt(第[2]部分);
}
警报(正常化('2/3/2000'))//警报“02/03/2000”
警报(正常化('12/11/2000'))//警报“12/11/2000”
警报(正常化('12/7/2000'))//警报“12/07/2000”
如您所见,此函数将在前两个数字中添加一个
0
,而不仅仅是第二个。

尝试以下操作:

function normalizeDate(input) {
  var parts = input.split('/');
  return (parts[0] < 10 ? '0' : '')
    + parseInt(parts[0]) + '/'
    + (parts[1] < 10 ? '0' : '')
    + parseInt(parts[1]) + '/'
    + parseInt(parts[2]);
}

alert(normalizeDate('2/3/2000')); //alerts "02/03/2000"
alert(normalizeDate('12/11/2000')); //alerts "12/11/2000"
alert(normalizeDate('12/7/2000')); //alerts "12/07/2000"
函数规格化(输入){
var parts=input.split('/');
返回(部分[0]<10?'0':'')
+parseInt(部分[0])+'/'
+(第[1]部分<10?'0':'')
+parseInt(parts[1])+'/'
+parseInt(第[2]部分);
}
警报(正常化('2/3/2000'))//警报“02/03/2000”
警报(正常化('12/11/2000'))//警报“12/11/2000”
警报(正常化('12/7/2000'))//警报“12/07/2000”

如您所见,此函数将在前两个数字中添加一个
0
,不仅仅是第二个。

所以基本上是0-pad月份值?你的意思是如果只有一个位数,你想在月份加一个前导零吗?所以基本上是0-pad月份值吗?你的意思是如果只有一个位数,你想在月份加一个前导零吗?这可能是最快的解决方案。我将搜索/\d{1-2}\//(一个或两个数字后跟一个斜杠),并用两位数替换它,就像您所做的那样,并使用parseInt(数字,10)正确处理09。parseInt(“09”)返回0您可以只搜索
\/\d\/
。在匹配
\d{2}
和检查其长度方面没有意义,事实上,如果输入的格式已经正确(22/01/2012->22/001/2012),这可能是最快的解决方案。我将搜索/\d{1-2}\//(一个或两个数字后跟一个斜杠),并用两位数替换它,就像您所做的那样,并使用parseInt(数字,10)正确处理09。parseInt(“09”)返回0您可以只搜索
\/\d\/
。在匹配
\d{2}
和检查其长度时没有任何意义,如果输入的格式已经正确,则实际上是错误的(22/01/2012->22/001/2012)