JavaScript

js和java日期的常用相关操作

Nick · 2月22日 · 2022年 · · 本文4434字 · 阅读12分钟281

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));
    }
0 条回应
在线人数:1人 来访统计
隐藏