我有一个输入类型的文字:
<input type="text" id="policyholder-dob" name="policyholder-dob" />
我想以mm / dd / yyyy格式输入此字段中的数字: 像2014年1月1日 这是我的js代码但不起作用,我犯了什么错误?
function dateFormatter(date) {
var formattedDate = date.getDate()
+ '/' + (date.getMonth() + 1) + '/' + date.getFullYear();
return formattedDate;
}
var nextduedate = $("#policyholder-dob").val();
var dateFormatDate = nextduedate.slice(0, 2);
var dateFormatMonth = nextduedate.slice(2, 4);
var dateFormatYear = nextduedate.slice(4, 8);
var totalFormat = dateFormatMonth + '/' + dateFormatDate + '/' + dateFormatYear;
var againNewDate = new Date(totalFormat);
againNewDate.setDate(againNewDate.getDate() + 1);
var todaydate = dateFormatter(againNewDate);
$("#policyholder-dob").prop("value", todaydate);
任何帮助都将非常感激。
答案 0 :(得分:0)
谢天谢地,您的输入始终采用以下格式:
mm/dd/yyyy
因此,您可以通过自定义函数将其转换为Date
对象,例如:
function stringToDate(str){
var date = str.split("/"),
m = date[0],
d = date[1],
y = date[2],
temp = [];
temp.push(y,m,d);
return (new Date(temp.join("-"))).toUTCString();
}
或者:
function stringToDate(str){
var date = str.split("/"),
m = date[0],
d = date[1],
y = date[2];
return (new Date(y + "-" + m + "-" + d)).toUTCString();
}
等。
调用它很容易:
stringToDate("12/27/1963");
它将返回GMT中的正确时间戳(这样您的本地时区不会影响日期(EST -5,导致它为26)):
Fri, 27 Dec 1963 00:00:00 GMT //Late december
有多种方法可以实现这一目标,这是其中之一。
答案 1 :(得分:0)
我建议moment.js进行日期操作。如果你想增加1个月的话,你会遇到一个受伤的世界。当月份是12月时会发生什么,最后你的月份是13。让图书馆为您解决所有这些问题。您可以使用从val中提取的字符串创建您的时刻日期。你的子串或解析。
var d = moment('01/31/2014'); // creates a date of Jan 31st, 2014
var duration = moment.duration({'days' : 1}); // creates a duration object for 1 day
d.add(duration); // add duration to date
alert(d.format('MM/DD/YYYY')); // alerts 02/01/2014