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)