我的需求是使用Layui的layDate 日期与时间组件设置一个业务申请的开始和结束时间。选择开始时间后自动将结束时间设置为5天后。先贴出通用代码,然后贴出我的需求代码。
通用代码(初始化日期字符串后进行相关操作):
var DateStr = "2019-05-06 18:19:56";//初始化一个时间字符串,可以只初始化到日期("2019-05-06")
DateStr = DateStr.replace(/-/g, '/');//装换成"2019/05/06 18:19:56"格式,可以直接使用new Date()来获取时间戳,有的环境不需要转换
var TimeStamp = new Date(DateStr );//获取时间戳
var TargetTimeStamp_Day = TimeStamp.setDate(TimeStamp.getDate() + 5);//将时间设置成时间戳后加5天
var TargetTimeStamp_Month = TimeStamp.setMonth(TimeStamp.getMonth() + 8);//将时间设置成时间戳后加8个月
var TargetTime_Day = format(TargetTimeStamp_Day );//将时间戳装换成时间字符串
var TargetTime_Month = format(TargetTimeStamp_Month );//将时间戳装换成时间字符串
function format(shijianchuo) {
function add0(m) { return m < 10 ? '0' + m : m }
//shijianchuo是整数,否则要parseInt转换
var time = new Date(shijianchuo);
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);
}
我的需求(日期字符串在layui组件中选择):
laydate.render({
elem: '#StartDate'
, type: 'datetime'
, value: jyrq
, done: function (value, date, endDate) {
//var StartDateTimeStr = value.replace(/-/g, '/');
var StartDateTimeStamp = new Date(value);
var EndTimeTimeStamp = StartDateTimeStamp.setDate(StartDateTimeStamp.getDate() + 5);//转换成时间戳后加5天
var EndTimeValue = format(EndTimeTimeStamp);//format()方法在通用代码中
$("#EndDate").val(EndTimeValue);
}
});
关于时间戳和时间字符串之间的转换即 format() 函数参考自:https://www.cnblogs.com/jingwhale/p/4674946.html