首页 > Java > java教程 > 为什么 SimpleDateFormat 会抛出'无法解析的日期”?

为什么 SimpleDateFormat 会抛出'无法解析的日期”?

Susan Sarandon
发布: 2025-01-01 02:22:09
原创
317 人浏览过

Why Does SimpleDateFormat Throw

使用 SimpleDateFormat 无法解析的日期:指定区域设置或使用 DateTimeFormatter

问题:
使用 SimpleDateFormat 时解析日期,你可能会遇到错误“java.text.ParseException:无法解析日期”,尤其是在未指定区域设置时。

说明:
SimpleDateFormat 需要区域设置才能正确解析日期。如果未指定,则使用系统的默认语言环境,该语言环境可能与正在解析的格式不匹配。

解决方案:

  1. 始终指定locale: 使用 SimpleDateFormat 的构造函数重载来接受 Locale 参数。例如:
SimpleDateFormat dtfmt = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
登录后复制
  1. 使用现代 DateTimeFormatter API:
  • DateTimeFormatter 是用于格式化和格式化的首选 API解析日期和时间。
  • 它提供了更大的灵活性和控制格式,包括指定区域设置的能力。

使用 DateTimeFormatter 的演示:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "24 Oct 2016 7:31 pm";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d MMM uuuu h:m a").withLocale(Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt); // prints 2016-10-24T19:31
    }
}
登录后复制

注意:

  • 由指定的 默认语言环境 DateTimeFormatter 使用系统当前的区域设置。
  • 始终显式指定区域设置以避免潜在的解析问题。

以上是为什么 SimpleDateFormat 会抛出'无法解析的日期”?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板