c# js日期工具

c#获取日期当年最后一天:model.StartDate.AddYears(1).AddSeconds(-1)

js日期工具:

var dateToolObj = {
methods: {
//url为参数时被转义,还原真实URL
htmlspecialchars_decode: function (str) {
str = str.replace(/&/g, '&');
str = str.replace(/&lt;/g, '<');
str = str.replace(/&gt;/g, '>');
str = str.replace(/&quot;/g, "''");
str = str.replace(/&#039;/g, "'");
return str;
},

/***
* 得到本年的起止日期
*
*/
getCurrentYear: function () {
//起止日期数组
var startStop = new Array();
//获取当前时间
var currentDate = new Date();
//获得当前年份4位年
var currentYear = currentDate.getFullYear();

//本年第一天
var currentYearFirstDate = new Date(currentYear, 0, 1);
//本年最后一天
var currentYearLastDate = new Date(currentYear, 11, 31);
//添加至数组
startStop.push(currentYearFirstDate);
startStop.push(currentYearLastDate);
//返回
return startStop;
},

/***
* 获得本月的起止时间
*/
getCurrentMonth: function () {
//起止日期数组
var startStop = new Array();
//获取当前时间
var currentDate = new Date();
//获得当前月份0-11
var currentMonth = currentDate.getMonth();
//获得当前年份4位年
var currentYear = currentDate.getFullYear();
//求出本月第一天
var firstDay = new Date(currentYear, currentMonth, 1);

//当为12月的时候年份需要加1
//月份需要更新为0 也就是下一年的第一个月
if (currentMonth == 11) {
currentYear++;
currentMonth = 0; //就为
} else {
//否则只是月份增加,以便求的下一月的第一天
currentMonth++;
}

//一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24;
//下月的第一天
var nextMonthDayOne = new Date(currentYear, currentMonth, 1);
//求出上月的最后一天
var lastDay = new Date(nextMonthDayOne.getTime() - millisecond);

//添加至数组中返回
startStop.push(firstDay);
startStop.push(lastDay);
//返回
return startStop;
},

/**
* 获得该月的天数
* @param year年份
* @param month月份
* */
getMonthDays: function (year, month) {
//本月第一天 1-31
var relativeDate = new Date(year, month, 1);
//获得当前月份0-11
var relativeMonth = relativeDate.getMonth();
//获得当前年份4位年
var relativeYear = relativeDate.getFullYear();

//当为12月的时候年份需要加1
//月份需要更新为0 也就是下一年的第一个月
if (relativeMonth == 11) {
relativeYear++;
relativeMonth = 0;
} else {
//否则只是月份增加,以便求的下一月的第一天
relativeMonth++;
}
//一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24;
//下月的第一天
var nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);
//返回得到上月的最后一天,也就是本月总天数
return new Date(nextMonthDayOne.getTime() - millisecond).getDate();
},

/***
* 获得本周起止时间
*/
getCurrentWeek: function () {
//起止日期数组
var startStop = new Array();
//获取当前时间
var currentDate = new Date();
//返回date是一周中的某一天
var week = currentDate.getDay();
//返回date是一个月中的某一天
var month = currentDate.getDate();

//一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24;
//减去的天数
var minusDay = week != 0 ? week - 1 : 6;
//alert(minusDay);
//本周 周一
var monday = new Date(currentDate.getTime() - (minusDay * millisecond));
//本周 周日
var sunday = new Date(monday.getTime() + (6 * millisecond));
//添加本周时间
startStop.push(monday); //本周起始时间
//添加本周最后一天时间
startStop.push(sunday); //本周终止时间
//返回
return startStop;
},
getCurrentDay: function () {
//起止日期数组
var startStop = new Array();
//获取当前时间
var currentDate = new Date();
var startDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 0, 0, 0);
var endDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 23, 59, 59);
startStop.push(startDate); //本周起始时间
//添加本周最后一天时间
startStop.push(endDate); //本周终止时间
//返回
return startStop;
},
InizDate: function (s, e, u, callback) {
u = htmlspecialchars_decode(u);
//Date range picker
$('#reservation').daterangepicker({
'language': 'zn-ch',
'locale': {
'format': 'YYYY年MM月DD日',
'applyLabel': '确定',
'cancelLabel': '取消',
'fromLabel': '开始',
'toLabel': '结束',
'monthNames': "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
'daysOfWeek': "日_一_二_三_四_五_六".split("_"),
},
startDate: s,
endDate: e
});
//Date range picker with time picker
$('#reservationtime').daterangepicker({ timePicker: true, timePickerIncrement: 30, format: 'MM/DD/YYYY h:mm A' });
//Date range as a button
$('#daterange-btn').daterangepicker(
{
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
startDate: moment().subtract(29, 'days'),
endDate: moment()
},
function (start, end) {
$('#daterange-btn span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
}
);

$("#dateSpan").text(Math.floor((new Date(e) - new Date(s)) / (24 * 3600 * 1000)) + 1 + "天");
$("#reservation").on('hide.daterangepicker', function (e, d) {
//当选择时间后,出发dt的重新加载数据的方法
$("#dateSpan").text(Math.floor((d.endDate - d.startDate) / (24 * 3600 * 1000)) + 1 + "天");
});
$("#reservation").on('apply.daterangepicker', function (e, d) {
if (callback) {
var startDate = new Date(d.startDate.toLocaleString()).format("yyyy-MM-dd hh:mm:ss");
var endDate = new Date(d.endDate.toLocaleString()).format("yyyy-MM-dd hh:mm:ss");
callback(startDate, endDate, 1, 20, false);
} else {
if (u != "") {
location.href = u + "&startDate=" + d.startDate._d.toLocaleString() + "&endDate=" + d.endDate._d.toLocaleString();
}
}
});
}
},
//日期,在原有日期基础上,增加minute分钟数,
//默认增加0分,返回'yyyy-MM-dd hh:mm'格式的日期
addMinute: function (dateSource, minute) {
if (minute == undefined || minute == '') {
minute = 0;
}
var date = new Date(dateSource);
//date.setDate(date.getDate() + days);
date.setMinutes(date.getMinutes() + minute);
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var mm = "'" + month + "'";
var dd = "'" + day + "'";
var hh = "'" + hour + "'";
var mi = "'" + minute + "'";
//单位数前面加0
if (mm.length == 3) {
month = "0" + month;
}
if (dd.length == 3) {
day = "0" + day;
}
if (hh.length == 3) {
hour = "0" + hour;
}
if (mi.length == 3) {
minute = "0" + minute;
}
var time = date.getFullYear() + "-" + month + "-" + day + " " + hour + ":" + minute;
return time;
},
//日期,在原有日期基础上,增加days天数,
//默认增加0天,返回'yyyy-MM-dd'格式的日期
addDate: function (dateSource, days) {
if (days == undefined || days == '') {
days = 0;
}
var date = new Date(dateSource);
date.setDate(date.getDate() + days);
var month = date.getMonth() + 1;
var day = date.getDate();
var mm = "'" + month + "'";
var dd = "'" + day + "'";
//单位数前面加0
if (mm.length == 3) {
month = "0" + month;
}
if (dd.length == 3) {
day = "0" + day;
}
var time = date.getFullYear() + "-" + month + "-" + day;
return time;
},
//new DateTime().addMonths(months);返回 'yyyy-MM-dd'格式的日期;
addMonth:function(months) {
var dateResult = new Date();
dateResult.setMonth(dateResult.getMonth() + months || 0);
return dateToolObj.dateStr(dateResult.toDateString(), 'yyyy-MM-dd');
},
//sDate1和sDate2是【2017-12-18】格式的日期,返回相差的天数
datedifference: function (sDate1, sDate2) {
var dateSpan, tempDate, iDays;
sDate1 = Date.parse(sDate1);
sDate2 = Date.parse(sDate2);
dateSpan = sDate2 - sDate1;
dateSpan = Math.abs(dateSpan);
iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
//iDays = Math.floor(dateSpan / (60 * 1000));
return iDays;
},
//返回当前日期添加月数后,与当前日期的差值,天数差值
getAddMonthDiff: function(months) {
return dateTool.datedifference(new Date().format('yyyy-MM-dd'), dateTool.addMonth(months));
},
dayConvertMonthStr: function (days) {
//先粗算,totaldays/30 取整,算出多少个月,再-1
//计算起始、结束日期
//差值天数 计算区间日期天数 (结束日期-起始日期)days
//末位天数 = totaldays-差值天数,如果大于当前月份最后1天的日期,去计算当前月是否为大于末位天数,如果大于则月数进一位,否则计算为天数。
var month = parseInt(days / 30);
if (month > 1) {
month -= 1;
}
var startDate = new Date().format('yyyy-MM-dd');
var endDate = dateTool.addMonth(month);
var totalDays = dateTool.datedifference(startDate, endDate);
var calcDay = days - totalDays;
if (calcDay > 0) {
var curMonthDay = dateTool.getCurMonthLastDay();
if (calcDay >= curMonthDay) {
month += 1;
//多出的天数 = 当前月末日-calcDay
calcDay = calcDay - curMonthDay;
if (calcDay > 0) {
return month + "月" + calcDay + "天";
} else {
return month + "月";
}
} else if (calcDay < curMonthDay && month == 0) {
return calcDay + "天";
}
return month + "月" + calcDay + "天";
} else if (calcDay < 0) {
return month + "月" + Math.abs(calcDay) + "天";
} else {
return month + "月";
}
},
dateFormat: function (dateTime, format) {
//return eval(dateTime.replace(//Date((d+))//gi, "new Date($1)")).format(format || 'yyyy-MM-dd');
if (dateTime.search(//Date((d+))//gi) == 0) {
dateTime = dateTime.replace(//Date((d+))//gi, "new Date($1)");
return eval(dateTime).format(format || 'yyyy-MM-dd');
}
else {
return dateTime;
}
},
dateStr: function (dateTime, format) {
return new Date(dateTime).format(format);
},
getMonthDay: function (year, month) {
//return month's day
var thisDate = new Date(year, month, 0);
return thisDate.getDate();
},
getDateSetControl: function (dataType) {
var startDate;
var endDate;
var nDays;
if (dataType == "today") {
var getCurrentStartDate = new Date();
startDate = getCurrentStartDate.format("yyyy-MM-dd");
endDate = getCurrentStartDate.format("yyyy-MM-dd");
nDays = 1;
}
if (dataType == "week") {
var dateWeek = dateTool.methods.getCurrentWeek();
startDate = dateWeek[0].format("yyyy-MM-dd");
endDate = dateWeek[1].format("yyyy-MM-dd");
nDays = Math.abs(parseInt((dateWeek[0] - dateWeek[1]) / 1000 / 3600 / 24)) + 1;
}
if (dataType == "month") {
var dateMonth = dateTool.methods.getCurrentMonth();
startDate = dateMonth[0].format("yyyy-MM-dd");
endDate = dateMonth[1].format("yyyy-MM-dd");
nDays = Math.abs(parseInt((dateMonth[1] - dateMonth[0]) / 1000 / 3600 / 24)) + 1;
}
if (dataType == "") {
var dateYear = dateTool.methods.getCurrentYear();
startDate = dateYear[0].format("yyyy-MM-dd");
endDate = dateYear[1].format("yyyy-MM-dd");
nDays = Math.abs(parseInt((dateYear[1] - dateYear[0]) / 1000 / 3600 / 24)) + 1;
}
dateTool.methods.InizDate(startDate, endDate, "", null);
$("#dateSpan").text(nDays + "天");
},
verifyDate: function () {
var getDate = $(".jeinput").val();
var regularDate = "^[0-9]{4}-(0?[0-9]|1[0-2])-(0?[1-9]|[12]?[0-9]|3[01])$";
if (!getDate.match(regularDate)) {
$(".jeinput").val("");
toastr.error('请以:2018-01-01 这样的日期格式输入.');
}
},
getCurMonthLastDay: function () {
var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
return parseInt(dateTool.dateStr(lastDay, 'dd'))||0;
}
};

原文地址:https://www.cnblogs.com/zhangzixin/p/10564012.html