前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js和java日期的常用相关操作

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

作者头像
不愿意做鱼的小鲸鱼
发布2022-09-26 19:09:36
2.9K0
发布2022-09-26 19:09:36
举报
文章被收录于专栏:web全栈

js日期的相关操作

1. 时间戳时间格式化

代码如下:

代码语言:javascript
复制
// 时间戳时间格式化
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;
}

测试:

代码语言:javascript
复制
// 时间戳转日期
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. 格式化日期和反格式化日期

代码如下:

代码语言:javascript
复制
// 格式化日期
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);
}

测试:

代码语言:javascript
复制
// 测试格式化日期
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. 计算两个日期之间的天数

代码如下:

代码语言:javascript
复制
/**
 * 计算两个日期之间的天数
 * @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;
}

测试:

代码语言:javascript
复制
// 测试格式化日期
// 计算两个日期的相隔天数
var start = "2022-02-22";
var end = "2022-03-22";
console.log(getDaysBetween(start, end));

// 测试结果
/*
28
*/

4. 计算日期加若干(年月日、时分秒等)后日期

代码如下:

代码语言:javascript
复制
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;
            }
    }
}

测试:

代码语言:javascript
复制
// 方法使用示例
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. 指定日期加上天数后的日期

代码语言:javascript
复制
 /**
     * 指定日期加上天数后的日期
     *
     * @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. 字符串的日期格式的计算

代码语言:javascript
复制
/*
     * 字符串的日期格式的计算
     * @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));
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • js日期的相关操作
    • 1. 时间戳时间格式化
      • 2. 格式化日期和反格式化日期
        • 3. 计算两个日期之间的天数
          • 4. 计算日期加若干(年月日、时分秒等)后日期
          • Java日期的相关操作
            • 1. 指定日期加上天数后的日期
              • 2. 字符串的日期格式的计算
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档