JavaScript实现日期转换

最近公司突然让维护一个 jsp 项目又复习了一把 js,其中用到的一些简单的方法记录下来;

将日期对象转换为 8 位日期

function getDateStr(date){
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 1 < 10) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1).toString();
    var day = (date.getDate() < 10) ? '0' + date.getDate() : date.getDate().toString();
    return year + month + day;
}

在使用这个方法时犯了一个很低级的错误没有注意到 js 是弱类型语言,起初没有给date.getDate()加 toString();导致在拼接大于 10 的日期时会出现 number 类型相加的场景;

错误代码:

function getDateStr(date){
    var year = date.getFullYear();
    var month = (date.getMonth() + 1 < 10) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
    var day = (date.getDate() < 10) ? '0' + date.getDate() : date.getDate();
    return year + month + day;
}

如 20241001 调用此方法会返回 2024+10+"01"最终得到 203401
year和month是 number 类型的而day是string 类型

将8 位日期转换为日期对象

function parseCustomDate(dateString) {
    // 验证日期字符串长度是否为8
    if (dateString.length !== 8) {
        throw new Error('Invalid date string format. It should be 8 characters long including the year, month, and day.');
    }
    // 分割字符串并组合成标准的日期格式
    const year = dateString.substring(0, 4);
    const month = dateString.substring(4, 6);
    const day = dateString.substring(6, 8);
    const formattedDate = `${year}-${month}-${day}`;
    // 解析日期字符串并返回日期对象
    return new Date(formattedDate);
}
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值