我有一个日期选择器,当用户输入为ddmmyyyy时,我想将日期解析为dd / mm / yyyy。
我在输入文字中添加了一个javascript函数,但我不知道我是否采用了正确的方法
<inputText id="input1" onchange="parseDate()"/>
<script type="text/javascript">
$(document).ready(function() {
$("#input1").datepicker()
};
function parseDate() {
???
}
<script>
由于
答案 0 :(得分:0)
在进行简单转换时,请考虑slice
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
在 RegExp 中,
[chars]
表示匹配这些字符(在这种情况下为c
,h
,a
,r
,s
)[^chars]
是[chars]
的倒数,即匹配除了这些字符之外的任何字符\d
是任意数字,即数字0
至9
g
标志表示g
个标题,即在比赛结束后继续寻找另一场比赛答案 1 :(得分:0)
如果这是您正在查看的确切格式,那么您可以解析它:
$('#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 :(得分:0)
试试这个......
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('/'); }