日期字符串格式化为日期类型

本文介绍了一个JavaScript函数,用于将多种格式的日期字符串解析为日期对象。支持年月日、年月日时分、年月日时分秒及毫秒等多种格式。

日期字符串 格式化为 日期类型

//日期字符串 格式化为 日期类型
var parseDate = function (str) {
        if (typeof str == 'string') {
            var results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);
            if (results && results.length > 3)
                return new Date(parseInt(results[1], 10), parseInt(results[2], 10) - 1, parseInt(results[3], 10));
            results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}) *$/);
            if (results && results.length > 5)
                return new Date(parseInt(results[1], 10), parseInt(results[2], 10) - 1, parseInt(results[3], 10), parseInt(results[4], 10), parseInt(results[5], 10));
            results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);
            if (results && results.length > 6)
                return new Date(parseInt(results[1], 10), parseInt(results[2], 10) - 1, parseInt(results[3], 10), parseInt(results[4], 10), parseInt(results[5], 10), parseInt(results[6], 10));
            results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);
            if (results && results.length > 7)
                return new Date(parseInt(results[1], 10), parseInt(results[2], 10) - 1, parseInt(results[3], 10), parseInt(results[4], 10), parseInt(results[5], 10), parseInt(results[6], 10), parseInt(results[7], 10));
        }
        else if (typeof str == 'number') {
            return new Date(str * 1000);
        }
        return null;
    };
console.log(parseDate("2017-12-12 12:00:00"))//Tue Dec 12 2017 12:00:00 GMT+0800 (中国标准时间)

拿到日期后日期简单封装http://blog.youkuaiyun.com/caohoucheng/article/details/79129747

在 Java 中,将字符串格式化日期类型是一个常见的需求,尤其是在处理用户输入或解析文件中的数据时。可以通过 `SimpleDateFormat` 类来实现这一目标,它是 `java.text` 包中的一个类,专门用于将日期格式化字符串或将字符串解析为日期对象。 ### 使用 `SimpleDateFormat` 解析字符串日期 `SimpleDateFormat` 提供了 `parse(String source)` 方法,可以将符合特定格式字符串转换为 `Date` 对象。使用前需要先定义与字符串格式匹配的模式,并确保输入的字符串严格遵循该格式,否则会抛出 `ParseException` 异常。 以下是一个完整的示例: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class StringToDateExample { public static void main(String[] args) { // 定义字符串形式的日期 String dateStr = "2025-04-05"; // 创建 SimpleDateFormat 实例并指定格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { // 将字符串解析为 Date 对象 Date parsedDate = sdf.parse(dateStr); System.out.println("解析后的日期对象:" + parsedDate); } catch (ParseException e) { System.err.println("日期解析失败: " + e.getMessage()); } } } ``` 上述代码中,`SimpleDateFormat` 被初始化为 `"yyyy-MM-dd"` 格式,与输入字符串 `"2025-04-05"` 相匹配。调用 `parse()` 方法后,字符串功转换为 `Date` 对象。如果输入字符串格式不一致(如 `"2025/04/05"`),则会触发异常[^1]。 ### 使用 `DateTimeFormatter`(Java 8 及以上) 从 Java 8 开始,推荐使用新的日期时间 API,例如 `java.time.LocalDate` 和 `DateTimeFormatter`,它们提供了更安全、更直观的方式来处理日期和时间。这些类是线程安全的,避免了 `SimpleDateFormat` 在多线程环境下的问题。 示例如下: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class StringToLocalDateExample { public static void main(String[] args) { // 定义字符串形式的日期 String dateStr = "2025-04-05"; // 创建 DateTimeFormatter 并指定格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 将字符串解析为 LocalDate 对象 LocalDate localDate = LocalDate.parse(dateStr, formatter); System.out.println("解析后的 LocalDate 对象:" + localDate); } } ``` 此方法使用 `LocalDate.parse(CharSequence text, DateTimeFormatter formatter)` 静态方法进行解析,无需手动捕获异常,且格式化器是线程安全的,适用于并发场景[^3]。 ### 注意事项 - 输入字符串必须与格式化器定义的格式完全一致,否则会导致解析失败。 - 如果字符串包含非标准格式(如 `"April 5, 2025"`),需自定义 `DateTimeFormatter` 或使用预定义的格式常量(如 `DateTimeFormatter.ISO_DATE`)。 - 在旧版本 Java 中,若需频繁执行解析操作,应避免重复创建 `SimpleDateFormat` 实例,以提高性能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值