# timeExpr
**Repository Path**: input4hua/timeExpr
## Basic Information
- **Project Name**: timeExpr
- **Description**: 解析字符串中的时间表达式,并替换
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-05-13
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# timeExpr
#### 介绍
解析字符串中的时间表达式,并替换
#### 实现细节
- 定义各个表达式处理节点,每个表达式解析节点通过正则表达式解析替换。
- 通过责任链模式,将各个解析节点连接起来
- 并通过暴露单例的责任链上的头部处理客户端,接收字符串入参,最后输出解析替换后的字符串
- 如对责任链模式不清楚,可参考我的博文:[【设计模式】09-责任链模式](https://blog.csdn.net/fengyu6623/article/details/88910692)
#### 使用说明
*现支持如下表达式替换*
1.**${TODAY}** 转换为:yyyy-MM-dd ,例如2019-05-13
- **${TODAY+n}**
>+n天, n需为数字,例如今天是2019-05-13 ${TODAY+1} 将会替换为:2019-05-14
- **${TODAY-n}**
>-n天, n需为数字,例如今天是2019-05-13 ${TODAY-1} 将会替换为:2019-05-12
2.**${hour}** 转换为:HH ,例如17
- **${hour+n}**
>+n小时, n需为数字,例如当前时间是17时 ${hour+1} 将会替换为:18
- **${hour-n}**
>-n小时, n需为数字,例如当前时间是17时 ${hour-1} 将会替换为:16
3.**${TODAY_HOUR}** 转换为:yyyyMMddHH ,例如2019051317
- **${TODAY_HOUR+m,n}**
>+m天+n小时, m、n需为数字,中间用','分隔, n可以不赋值,即可以${TODAY_HOUR+m}只偏移日期
>例如当前时间是2019051317 ${TODAY_HOUR+2,1} 将会替换为:2019051518
>例如当前时间是2019051317 ${TODAY_HOUR+1} 将会替换为:2019051417
- **${TODAY_HOUR-m,n}**
>-m天-n小时, m、n需为数字,中间用','分隔, n可以不赋值,即可以${TODAY_HOUR+m}只偏移日期
>例如当前时间是2019051317 ${TODAY_HOUR-2,1} 将会替换为:2019051116
>例如当前时间是2019051317 ${TODAY_HOUR-1} 将会替换为:2019051217
4.**${today}** 转换为:yyyyMMdd ,例如20190513
- **${today+n}**
>+n天, n需为数字,例如今天是20190513 ${today+1} 将会替换为:20190514
- **${today-n}**
>-n天, n需为数字,例如今天是20190513 ${today-1} 将会替换为:20190512
#### 测试用例
com.input4hua.expr.time.TimeExprTest