【问题标题】:javascript format date from DDMMYYYY to DD/MM/YYYYjavascript 格式日期从 DDMMYYYY 到 DD/MM/YYYY
【发布时间】:2016-01-11 12:08:47
【问题描述】:
我有一个日期选择器,当用户输入为 ddmmyyyy 时,我想将日期解析为 dd/mm/yyyy。
Image
我在输入文本中添加了一个 javascript 函数,但我不知道我的方法是否正确
<inputText id="input1" onchange="parseDate()"/>
<script type="text/javascript">
$(document).ready(function() {
$("#input1").datepicker()
};
function parseDate() {
???
}
<script>
谢谢
【问题讨论】:
标签:
javascript
jquery
datetime
datepicker
【解决方案1】:
如果这是您正在查看的确切格式,那么您可以将其解析出来:
http://jsfiddle.net/q3yrtu0z/
$('#input1').change(function() {
$(this).val($(this).val().replace(/^(\d{2})(\d{2})(\d{4})$/, '$1/$2/$3'));
});
这是这样设计的,如果该值正好是 8 位,那么它将格式化为 XX/XX/XXXX。
您可能希望对日期格式的有效性进行额外验证(尽管无论如何您也必须对 MM/DD/YYYY 输入执行此操作)
【解决方案2】:
试试这个....
function convertDate(inputFormat) {function pad(s) { return (s < 10) ? '0' + s : s; } var d = new Date(inputFormat); return [pad(d.getDate()), pad(d.getMonth()+1), d.getFullYear()].join('/'); }
【解决方案3】:
当您进行简单的转换时,请考虑 sliceing 您的 String 到您想要添加字符的位置,例如
var strA = '13102015',
strB = strA.slice(0, 2) + '/' + strA.slice(2, 4) + '/' + strA.slice(4);
strB; // "13/10/2015"
如果用户稍后修改它可能会被多次调用,您可能还希望在开始时使用 replace 强制输入为预期格式,例如
'13/102015'.replace(/[^\d]/g, ''); // "13102015"
// now continue to slice
在一个正则表达式中,
-
[chars] 表示匹配这些字符(在本例中为 c、h、a、r、s)
-
[^chars] 是 [chars] 的倒数,即匹配除这些字符之外的任何字符
-
\d 是任何数字,即数字 0 到 9
-
g 标志表示global,即在一场比赛之后继续寻找另一场比赛