今天偶然用到字符串到时间的转换,使用的是org.apache.commons.lang.time.DateUtils.paraseDate(String sDate,String[] parasePatterns);
在使用的时候,发现一个问题
String[] pattern = new String[]{"yyyy-MM","yyyyMM","yyyy/MM",
"yyyyMMdd","yyyy-MM-dd","yyyy/MM/dd",
"yyyyMMddHHmmss",
"yyyy-MM-dd HH:mm:ss",
"yyyy/MM/dd HH:mm:ss"};
DateUtils.parseDate(date, pattern);
数组pattern中元素的顺序是比较重要的,如果yyyy-MM在yyyyMMdd之后,当解析2009-10的时候,将不会得到预期的时间。
System.out.println(
DateUtils.parseDate("2009-10", new String[]{"yyyy-MM"}));
System.out.println(
DateUtils.parseDate("2009-10", new String[]{"yyyyMMdd"}));
输出结果
Thu Oct 01 00:00:00 CST 2009
Fri Oct 31 00:00:00 CST 2008
所以如果pattern数组里面yyyyMMdd在yyyy-MM之前,当解析2009-10的时候,
返回的是Fri Oct 31 00:00:00 CST 2008,
而不是预期的Thu Oct 01 00:00:00 CST 2009
同理,对于yyMM和yyMMdd也存在这样的问题。
看下源码,采用的是SimpleDateFormat.parase(String sDate,ParsePosition pos)。有时间再看看这个是为啥。
分享到:
相关推荐
在Java标准库中,虽然有`java.util.Date`和`java.text.SimpleDateFormat`等类可以处理日期和时间,但它们的使用往往较为复杂,因此开发者经常创建自定义的`DateUtils`来封装常用操作,提高代码的可读性和可维护性。...
- 处理日期时间操作过程中可能出现的异常,如 `ParseException`(解析日期字符串时),`IllegalArgumentException`(非法参数传递)等。 这个`DateUtils` 工具类的使用可以极大地简化日期时间的操作,提高代码的...
`DateUtils`可能会提供便捷的方法来实现这一过程,例如`formatDate(Date date, String pattern)`和`parseDate(String str, String pattern)`。 2. **日期比较**:为了比较两个日期,`DateUtils`可能包含`isBefore...
去日期解析器 解析许多日期字符串而无需事先知道格式。...t , err := dateparse . ParseAny ( "3/1/2014" ) // Parse Strict, error on ambigous mm/dd vs dd/mm dates t , err := dateparse . ParseStr
3. **日期比较**:`DateUtils` 可能提供`isBefore(Date date1, Date date2)`、`isAfter(Date date1, Date date2)`和`isEqual(Date date1, Date date2)`这样的比较方法,用于判断两个日期的先后关系。 4. **时间间隔...
反之,`parse(String str, String pattern)`方法则用于将字符串解析成Date对象。 3. **日期比较**: DateUtil可能包含`compare(Date date1, Date date2)`方法,根据日期的先后顺序返回一个整数值,如果date1在date...
例如,当我们从数据库查询结果中获取到一个日期字段时,它通常是以String的形式返回,我们需要使用`DateUtils.parseDate()`将其转换为Date对象,然后可以进一步处理或展示。相反,如果我们需要将用户输入的日期保存...
`dateutils` 是一个 Python 库,专门用于增强 Python 的日期和时间处理能力,它提供了许多实用的功能,使得开发者能够更高效地处理日期和时间数据。`dateutils-0.6.11.tar.gz` 是这个库的源码压缩包,可以在 PyPI...
例如,可以使用`DateUtils.parseDate("2022-01-01", "yyyy-MM-dd")`将字符串转换为日期对象,或者使用`DateUtils.addDays(date, 7)`来增加日期。这类工具类通常会处理时区问题,使得日期处理更加准确和便捷,避免了...
DateUtils工具类也提供了日期解析的方法,例如parseDate方法可以将字符串形式的日期解析为日期对象,例如: ```java public static Date parseDate(String dateValue) { return parseDate(dateValue, null); } ```...
`DateUtils`可以进行日期的解析、格式化和比较,如`DateUtils.parseDate()`可以将字符串转换为日期对象,`DateUtils.isSameDay()`则可以判断两个日期是否为同一天。`FastDateFormat`是比`SimpleDateFormat`更高效的...
8. **日期解析**:`parseDate`方法可能接受一个格式化的日期字符串,并尝试将其解析为日期对象。这对于用户输入的日期处理非常有用。 在Flex项目中,`DateUtils`类的这些功能可以极大地提高代码的可读性和可维护性...
2. **使用JSP标签库**:可以利用Struts提供的`<html:text>`标签或者更现代的JSTL `<fmt:formatDate>`和`<fmt:parseDate>`标签,它们能够帮助在视图层进行日期的格式化和解析,确保传入ActionForm的日期字符串是正确...
- `parseDate(String dateStr, String... patterns)`:此方法可以尝试用多个日期格式来解析字符串,直到找到一个匹配的格式。这样避免了因不确定输入日期格式而引发的异常。 - `formatDate(Date date, String ...
在这个案例中,我们讨论的是一个名为`DateUtils.java`的文件,它可能包含了对Java内置`java.util.Date`、`java.time`或者其他日期时间API的扩展或封装。 `DateUtils.java`可能包含以下知识点: 1. **日期时间API的...
Date startDate = DateUtils.parseDate(dateString, "yyyy-MM-dd HH:mm:ss"); ``` 除了基础操作外,还可以考虑使用EventAccessLevel来控制事件的可见性,或者使用AlarmManager来设置提醒。对于多用户环境,还可以...
- **日期格式化与解析**:`DateUtils`提供了多种格式化日期和时间的函数,例如`format()`和`parse()`, 支持自定义日期时间格式,如"yyyy-MM-dd HH:mm:ss",能够将日期对象转换为字符串,或反向将字符串解析成日期...
在Java编程中,DateUtils工具类是一个非常实用的辅助类,它封装了各种日期和时间处理的方法,大大简化了开发者在处理日期时的工作。这里我们深入探讨一下自定义的DateUtils工具类及其重要功能。 首先,`DateUtils`...
首先,DateUtils 时间工具类提供了多种方法来操作日期和时间,包括获取几天前的时间、获取几天后的时间、获取当前时间戳、日期格式字符串转换成时间戳、Date 转化为时间戳、将 String 转化为 Date 等。 获取几天前...
2. 日期格式化:`DateUtils.parseDate()`可以解析多种格式的日期字符串,而`DateFormatUtils.format()`则可以将日期对象格式化为指定的字符串。 3. 反射调用方法:`MethodUtils.invokeExactMethod()`允许精确地调用...