目录
js日期的相关操作
1. 时间戳时间格式化
代码如下:
// 时间戳时间格式化
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
Y = date.getFullYear() + '-';
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
D = date.getDate() + ' ';
h = date.getHours() + ':';
m = date.getMinutes() + ':';
s = date.getSeconds();
return Y + M + D + h + m + s;
}
测试:
// 时间戳转日期
var timestamp = (new Date("2015/06/23 08:00:20")).getTime() / 1000;
console.log("时间戳:" + timestamp);
console.log("时间戳转日期:" + timestampToTime(timestamp));
// 测试结果
/*
时间戳:1435017620
时间戳转日期:2015-06-23 8:0:20
*/
2. 格式化日期和反格式化日期
代码如下:
// 格式化日期
function dateFormat(fmt, date) {
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
S: date.getMilliseconds(), //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(
RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length)
);
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
);
return fmt;
}
// 反格式化日期
function dateDeformat(str) {
// str:2022-08-12 23:13:15
str = str.replace(/-/g, "/");
return new Date(str);
}
测试:
// 测试格式化日期
console.log("测试格式化日期");
var time1 = dateFormat("yyyy-MM-dd hh:mm:ss", new Date());
console.log(time1);
var time2 = dateFormat("yyyy-MM-dd", new Date());
console.log(time2);
// 测试反格式化日期
console.log("测试反格式化日期");
console.log(time1 + " 反格式化日期:" + dateDeformat(time1));
console.log(time2 + " 反格式化日期:" + dateDeformat(time2));
// 测试结果
/*
测试格式化日期
2022-02-22 16:50:52
2022-02-22
测试反格式化日期
2022-02-22 16:50:52 反格式化日期:Tue Feb 22 2022 16:50:52 GMT+0800 (中国标准时间)
2022-02-22 反格式化日期:Tue Feb 22 2022 00:00:00 GMT+0800 (中国标准时间)
*/
3. 计算两个日期之间的天数
代码如下:
/**
* 计算两个日期之间的天数
* @param dateString1 开始日期 yyyy-MM-dd
* @param dateString2 结束日期 yyyy-MM-dd
* @returns {number} 如果日期相同 返回一天 开始日期大于结束日期,返回0
*/
function getDaysBetween(start, end) {
var startDate = Date.parse(start);
var endDate = Date.parse(end);
if (startDate > endDate) {
return 0;
}
if (startDate == endDate) {
return 1;
}
var days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
return days;
}
测试:
// 测试格式化日期
// 计算两个日期的相隔天数
var start = "2022-02-22";
var end = "2022-03-22";
console.log(getDaysBetween(start, end));
// 测试结果
/*
28
*/
4. 计算日期加若干(年月日、时分秒等)后日期
代码如下:
function DateAdd(interval, number, date) {
/*
* 功能:实现VBScript的DateAdd功能.
* 参数:interval,字符串表达式,表示要添加的时间间隔.
* 参数:number,数值表达式,表示要添加的时间间隔的个数.
* 参数:date,时间对象.
* 返回:新的时间对象.
* var now = new Date();
* var newDate = DateAdd("d",5,now);
*--------------- DateAdd(interval,number,date) -----------------
*/
switch (interval) {
case "y ":
{
date.setFullYear(date.getFullYear() + number);
return date;
break;
}
case "q ":
{
date.setMonth(date.getMonth() + number * 3);
return date;
break;
}
case "m ":
{
date.setMonth(date.getMonth() + number);
return date;
break;
}
case "w ":
{
date.setDate(date.getDate() + number * 7);
return date;
break;
}
case "d ":
{
date.setDate(date.getDate() + number);
return date;
break;
}
case "h ":
{
date.setHours(date.getHours() + number);
return date;
break;
}
case "m ":
{
date.setMinutes(date.getMinutes() + number);
return date;
break;
}
case "s ":
{
date.setSeconds(date.getSeconds() + number);
return date;
break;
}
default:
{
date.setDate(date.getDate() + number);
return date;
break;
}
}
}
测试:
// 方法使用示例
console.log("测试日期加若干时间");
var now = new Date();
console.log('当前时间 :>> ', now);
// 加五天
console.log("加五天");
var newDate = DateAdd("d ", 5, now);
console.log(newDate);
// 加两个月.
console.log("加两个月");
newDate = DateAdd("m ", 2, now);
console.log(newDate);
// 加一年
console.log("加一年");
newDate = DateAdd("y ", 1, now);
console.log(newDate);
// 测试结果
/*
测试日期加若干时间
当前时间 :>> 2022-02-22T09:22:34.099Z
加五天
2022-02-27T09:22:34.099Z
加两个月
2022-04-27T09:22:34.099Z
加一年
2023-04-27T09:22:34.099Z
*/
Java日期的相关操作
1. 指定日期加上天数后的日期
/**
* 指定日期加上天数后的日期
*
* @param num 为增加的天数
* @param newDate 创建时间
* @return
* @throws ParseException
*/
public static String plusDay(int num, String newDate) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date currdate = format.parse(newDate);
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, num);// num为增加的天数,可以改变的
currdate = ca.getTime();
String enddate = format.format(currdate);
return enddate;
}
2. 字符串的日期格式的计算
/*
* 字符串的日期格式的计算
* @param smdate 时间1
* @param bdate 时间2
* @return 时间2 - 时间1
* @throws ParseException
*/
public static int daysBetween(String smdate, String bdate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}