org.apache.commons.lang.time.DateUtils

本文总结了org.apache.commons.lang.time.DateUtils类中的一系列方法,包括日期的加减操作及日期比较等功能,提供了实用的日期处理手段。

原创  org.apache.commons.lang.time.DateUtils(常用的一些函数) 收藏

<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } TD P { margin-bottom: 0cm } TT.cjk { font-family: "DejaVu LGC Sans Mono", monospace } -->

jar版本:2.3

Method Summary

static java.util.Date

addDays (java.util.Date date, int amount) 
          Adds a number of days to a date returning a new object.

一个日期对象+ n天

static java.util.Date

addHours (java.util.Date date, int amount) 
          Adds a number of hours to a date returning a new object.

一个日期对象+ n小时

static java.util.Date

addMilliseconds (java.util.Date date, int amount) 
          Adds a number of milliseconds to a date returning a new object.

一个日期对象 +n毫秒

static java.util.Date

addMinutes (java.util.Date date, int amount) 
          Adds a number of minutes to a date returning a new object.

一个日期对象 +n分

static java.util.Date

addMonths (java.util.Date date, int amount) 
          Adds a number of months to a date returning a new object.

 一个日期对象+ n月

static java.util.Date

addSeconds (java.util.Date date, int amount) 
          Adds a number of seconds to a date returning a new object.

一个日期对象+ n秒

static java.util.Date

addWeeks (java.util.Date date, int amount) 
          Adds a number of weeks to a date returning a new object.

一个日期对象+ N个星期

static java.util.Date

addYears (java.util.Date date, int amount) 
          Adds a number of years to a date returning a new object.

一个日期对象+ N年

 

static boolean

isSameDay (java.util.Date date1, java.util.Date date2) 
          Checks if two date objects are on the same day ignoring time.

两个日期对象是否相等(只比较年-月-日)

 

 

static boolean

isSameInstant (java.util.Date date1, java.util.Date date2) 
          Checks if two date objects represent the same instant in time.

比较两个日期是否完全相等(精确到毫秒)

 

static java.util.Date

parseDate (java.lang.String str, java.lang.String[] parsePatterns) 
          Parses a string representing a date by trying a variety of different parsers.

例 :

String[] format={ "yyyy-MM-dd" };

System. out .println(DateUtils.parseDate ( "2009-10-20" , format));

 

 

<think>我们正在处理一个Maven依赖解析失败的问题,具体是`org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0`。这个依赖属于SpringSource的封装版本,通常用于Spring项目中。由于Maven中央仓库可能没有这个包,因此我们需要寻找替代方案。 根据错误信息,依赖解析失败,可能是因为该依赖不在公共仓库中。SpringSource曾经维护了一个仓库,但现在已经不再更新。因此,我们通常建议使用官方的Apache Commons Lang依赖。 官方依赖为: ``` <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> ``` 但是,请注意,2.4版本已经较老,可能也存在仓库中不易获取的情况。因此,我们也可以考虑升级到更新的版本,比如2.6或者使用`commons-lang3`(注意,这是不同的依赖)。 如果项目需要使用`commons-lang`,且版本为2.x,可以尝试使用官方的2.6版本: ``` <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> ``` 如果项目可以升级到`commons-lang3`,则使用: ``` <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> <!-- 使用最新版本 --> </dependency> ``` 但是,如果项目代码中使用了`com.springsource`前缀的包,那么替换为官方依赖后,需要修改代码中的包路径,因为SpringSource封装的包名是`org.apache.commons.lang`,而官方的是`org.apache.commons.lang`(注意,实际上是一样的,因为SpringSource只是重新打包了官方的库)?实际上,SpringSource的包名和官方相同,只是groupId不同。 然而,在SpringSource的封装版本中,他们可能会修改包名(例如加上自己的前缀)?但根据历史情况,`com.springsource.org.apache.commons.lang`这个groupId下的包,其内部包名仍然是`org.apache.commons.lang`。因此,直接替换为官方的commons-lang依赖,包名不会改变,所以代码应该可以继续使用。 但是,如果项目依赖的是SpringSource特定的版本,可能有一些细微的差异(尽管可能性很小),因此替换后需要进行测试。 另外,如果项目使用Spring Boot,它通常管理了依赖的版本,我们可以使用Spring Boot提供的依赖管理,这样就不需要指定版本号。 例如,在Spring Boot项目中,我们可以这样引入`commons-lang3`(注意,Spring Boot 2.x开始可能只支持`commons-lang3`): ``` <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> ``` 对于`commons-lang`(2.x),Spring Boot 1.x中可能还有管理,但Spring Boot 2.x中已经移除了。因此,如果使用Spring Boot 2.x,建议迁移到`commons-lang3`。 总结步骤: 1. 尝试将依赖替换为官方的commons-langcommons-lang3。 2. 修改pom.xml中的依赖声明。 3. 如果替换后代码编译不通过,检查是否因为版本差异导致API变化(特别是从commons-lang 2.x到commons-lang3,包名从`org.apache.commons.lang`变为`org.apache.commons.lang3`,且API有变化)。 4. 如果必须使用SpringSource的版本,可以尝试添加SpringSource的仓库到pom.xml或settings.xml中,但该仓库可能已经不再维护,因此不推荐。 添加SpringSource仓库的方法(不推荐,因为可能已经失效): ``` <repositories> <repository> <id>com.springsource.repository.bundles.release</id> <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> <url>http://repository.springsource.com/maven/bundles/release</url> </repository> <repository> <id>com.springsource.repository.bundles.external</id> <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> <url>http://repository.springsource.com/maven/bundles/external</url> </repository> </repositories> ``` 由于这些仓库可能已经不可用,所以优先建议替换为官方依赖。 因此,解决方案是: - 替换依赖为官方的commons-langcommons-lang3,并修改代码(如果需要)。 下面我们给出一个替换为`commons-lang3`的示例,因为这是目前的主流做法。 步骤: 1. 在pom.xml中移除原有的依赖: ```xml <!-- 移除原有的依赖 --> <!-- <dependency> <groupId>org.apache.commons</groupId> <artifactId>com.springsource.org.apache.commons.lang</artifactId> <version>2.4.0</version> </dependency> --> ``` 2. 添加`commons-lang3`依赖: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> <!-- 或者使用Spring Boot的依赖管理,省略版本号 --> </dependency> ``` 3. 在代码中,将`import org.apache.commons.lang...`改为`import org.apache.commons.lang3...`,并修改可能因API变化而导致的编译错误(例如,一些方法被移动到了新的类中,或者方法名有变化)。 如果项目不能立即升级到`commons-lang3`,也可以使用`commons-lang`的2.6版本(官方最后发布的2.x版本): ```xml <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> ``` 这样,包名仍然是`org.apache.commons.lang`,通常不需要修改代码,但要注意2.6版本与2.4版本之间的API差异(如果有的话)。 最后,清理Maven本地仓库中关于`com.springsource.org.apache.commons.lang`的依赖,重新构建项目。 如果问题仍然存在,请检查是否有其他依赖传递引入了该依赖,可以使用`mvn dependency:tree`查看依赖树,并排除掉传递依赖。 例如,如果某个依赖传递引入了`com.springsource.org.apache.commons.lang:2.4.0`,可以这样排除: ```xml <dependency> <groupId>some.group</groupId> <artifactId>some-artifact</artifactId> <version>version</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> <artifactId>com.springsource.org.apache.commons.lang</artifactId> </exclusion> </exclusions> </dependency> ``` 然后重新引入官方的commons-lang依赖。 综上所述,解决该问题的主要方法是替换依赖。</think>### 解决 Maven 依赖解析失败问题 您遇到的依赖解析失败问题 (`org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0`) 通常是由以下原因导致的,以下是逐步解决方案: #### 1. **检查依赖坐标正确性** SpringSource 的特殊封装格式已过时,正确官方坐标应为: ```xml <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> <!-- 推荐使用最新2.x版本 --> </dependency> ``` 立即修改 `pom.xml` 中的依赖声明[^1]。 #### 2. **添加仓库配置(备用方案)** 若必须使用 SpringSource 封装版,在 `pom.xml` 中添加旧版仓库: ```xml <repositories> <repository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> ``` > **注意**:SpringSource 仓库可能已不维护此版本,优先推荐方案1。 #### 3. **升级到 Commons Lang3(推荐)** 现代项目应迁移至官方维护的 `commons-lang3`: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> <!-- 2023年最新版本 --> </dependency> ``` 代码迁移指南: - 导入路径:`org.apache.commons.lang3.*` - 常用类对照: - `StringUtils` → `StringUtils` - `DateUtils` → `DateUtils` - `SystemUtils` → `SystemUtils` #### 4. **检查依赖冲突** 执行命令检查依赖树: ```bash mvn dependency:tree -Dincludes=commons-lang ``` 若存在多个版本,在冲突依赖中添加排除: ```xml <dependency> <groupId>problematic.group</groupId> <artifactId>problematic-artifact</artifactId> <exclusions> <exclusion> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </exclusion> </exclusions> </dependency> ``` #### 5. **清理本地仓库** 删除损坏的依赖缓存: ```bash # 路径示例(Windows): del /s /q "%USERPROFILE%\.m2\repository\org\apache\commons\com.springsource.org.apache.commons.lang\*" ``` ### 验证解决方案 1. 重新加载 Maven 项目: ```bash mvn clean install -U ``` 2. 在 Spring 配置中验证类加载: ```java import org.apache.commons.lang3.StringUtils; // Lang3 导入示例 public class Validation { public static void main(String[] args) { System.out.println(StringUtils.capitalize("test")); // 输出 "Test" } } ``` ### 常见错误处理 | 错误类型 | 解决方案 | |--------------------------|------------------------------------------| | `ClassNotFoundException` | 检查依赖作用域(确保不是`test`或`provided`) | | `NoSuchMethodError` | 依赖冲突导致,执行`dependency:tree`分析 | | `SHA1 校验失败` | 删除本地仓库对应目录后重试 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值