You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何将字符串转换为Date对象?适配DatePicker场景

嘿,我来帮你搞定这两个JavaScript日期转换的问题,都是前端开发里常遇到的场景哦!

如何在JavaScript中将字符串转换为Date对象?

在JS里把字符串转成Date对象有几种实用方法,但要注意不同日期格式的兼容性——毕竟不同浏览器对非标准日期字符串的解析可能有差异:

  • 直接用Date构造函数(仅限标准格式):如果你的字符串是YYYY-MM-DD、YYYY/MM/DD或者带时间的YYYY-MM-DDTHH:mm:ss这类标准格式,直接传给new Date()就可以:

    const standardDateStr = "2018-04-12";
    const dateObj = new Date(standardDateStr);
    console.log(dateObj); // 输出对应的Date对象
    

    注意:像DD/MM/YYYY这种非标准格式直接传的话,很多浏览器会把它当成MM/DD/YYYY,很容易解析错误,所以别这么用!

  • 手动拆分字符串构造(自定义格式首选):如果你的日期字符串是自定义格式(比如DD.MM.YYYY、MM-DD-YYYY),最稳妥的方式是手动拆分出年、月、日,再传给Date构造函数——重点提醒:JS里的月份是从0开始计数的,1月对应0,12月对应11,所以月份要减1!

    const customDateStr = "12.04.2018";
    const [day, month, year] = customDateStr.split(".");
    const dateObj = new Date(year, month - 1, day);
    console.log(dateObj); // 正确解析为2018年4月12日的Date对象
    
  • 用Date.parse()转时间戳再构造:这个方法会把日期字符串转成Unix时间戳,再用时间戳创建Date对象,不过兼容性和直接用Date构造函数差不多,同样只适合标准格式:

    const timestamp = Date.parse("2018-04-12");
    const dateObj = new Date(timestamp);
    
针对"12.04.2018"格式的字符串转换方案

你现在通过var endDate = $('#endDateHistory').val();拿到了"12.04.2018"这种日.月.年格式的字符串,要转成Date对象给DatePicker用,这里给你两种方案:

方案一:手动转换Date对象

直接拆分字符串后构造,代码如下:

// 获取日期字符串
var endDate = $('#endDateHistory').val(); // 值为"12.04.2018"

// 拆分出日、月、年
const [day, month, year] = endDate.split(".");

// 构造正确的Date对象(月份减1)
const dateObj = new Date(year, month - 1, day);

// 现在dateObj就可以直接传给DatePicker使用了

方案二:利用DatePicker自身的格式解析(更省心)

如果你用的是jQuery UI DatePicker,其实可以在初始化时指定日期格式,让它自动解析这种字符串,不用手动转换:

// 初始化DatePicker时设置对应的日期格式
$("#yourDatePickerElement").datepicker({
  dateFormat: "dd.mm.yy" // 对应"12.04.2018"的格式
});

// 直接设置值,DatePicker会自动转成Date对象
$("#yourDatePickerElement").datepicker("setDate", endDate);

这样就不用自己处理月份减1的问题了,非常方便~

内容的提问来源于stack exchange,提问作者Cagribeyg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:21:03