Joda-Time
2018-01-02 10:59
204 查看
shell date:
Joda-Time :既然无法摆脱时间,为何不设法简化时间处理?
一、java.util.Calendar VS org.joda.time.DateTime
二、Joda 的关键日期/时间概念
不可变性(Immutability):实例无法被修改、线程安全、java.lang.String
瞬间性(Instant):一个瞬间 就是指时间线上只出现一次且唯一的一个时间点
局部性(Partial):时间的一部分片段,将局部时间片段看作一个重复周期中的一点
年表(Chronology):一种日历系统
时区(Time zone):用于计算时间
三、实例 jackson-datatype-joda
1.date -d @1500000000 2017年 07月 14日 星期五 10:40:00 CST date -d @1400000000 2014年 05月 14日 星期三 00:53:20 CST date -d @1000000000 2001年 09月 09日 星期日 09:46:40 CST date -d @1 1970年 01月 01日 星期四 08:00:01 CST date -d @0 1970年 01月 01日 星期四 08:00:00 CST 2.在设定时间方面 date -s “2008-05-23 01:01:01″ //这样可以设置全部时间 3.加减 date +%Y%m%d //显示现在天年月日 date +%Y%m%d --date="-1 day" //显示前一天的日期 date +%Y%m%d --date="+1 month" //显示下一月的日期 date +%Y%m%d --date="-1 year" //显示前一年的日期
Joda-Time :既然无法摆脱时间,为何不设法简化时间处理?
一、java.util.Calendar VS org.joda.time.DateTime
1.构造函数 Calendar calendar = Calendar.getInstance(); calendar.set(2000, Calendar.JANUARY, 1, 0, 0, 0); DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0); 2.日期运算 Calendar calendar = Calendar.getInstance(); calendar.set(2000, Calendar.JANUARY, 1, 0, 0, 0); SimpleDateFormat sdf = new SimpleDateFormat("E MM/dd/yyyy HH:mm:ss.SSS"); calendar.add(Calendar.DAY_OF_MONTH, 90); System.out.println(sdf.format(calendar.getTime())); DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0); System.out.println(dateTime.plusDays(90).toString("E MM/dd/yyyy HH:mm:ss.SSS")); 3.某天的45天之后的某天的下一个月的当前周的最后一天的日期 DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0); System.out.println(dateTime.plusDays(45).plusMonths(1).dayOfWeek() .withMaximumValue().toString("E MM/dd/yyyy HH:mm:ss.SSS")); 4.Joda 和 JDK 互操作性 Calendar calendar = Calendar.getInstance(); DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0); System.out.println(dateTime.plusDays(45).plusMonths(1).dayOfWeek() .withMaximumValue().toString("E MM/dd/yyyy HH:mm:ss.SSS")); calendar.setTime(dateTime.toDate());
二、Joda 的关键日期/时间概念
不可变性(Immutability):实例无法被修改、线程安全、java.lang.String
瞬间性(Instant):一个瞬间 就是指时间线上只出现一次且唯一的一个时间点
局部性(Partial):时间的一部分片段,将局部时间片段看作一个重复周期中的一点
年表(Chronology):一种日历系统
时区(Time zone):用于计算时间
三、实例 jackson-datatype-joda
1.引入: <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-joda</artifactId> <version>2.4.0</version> </dependency> 2.注册: ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JodaModule()); 3.使用: public class Bean { public DateTime start; } final String INPUT_JSON = "{\"start\" : \"1972-12-28T12:00:01.000Z\"}"; Bean bean = mapper.readValue(INPUT_JSON, Bean.class); String json = mapper.writeValueAsString(bean); jackson-module-parameter-names:添加访问参数名称的支持 public class EnumNamingTest { enum SurprisingEnum32 { @JsonProperty("customValue") ENUM_NAME; } // for [module-parameter-names#32] @Test public void testCustomEnumName() throws Exception { final String EXP = "\"customValue\""; // First, verify default handling String json = new ObjectMapper() .writeValueAsString(SurprisingEnum32.ENUM_NAME); assertEquals(EXP, json); // and then with parameter names module final ObjectMapper mapperWithNames = new ObjectMapper() .registerModule(new ParameterNamesModule()); json = mapperWithNames.writeValueAsString(SurprisingEnum32.ENUM_NAME); assertEquals(EXP, json); // plus read back: SurprisingEnum32 value = mapperWithNames.readValue(json, SurprisingEnum32.class); assertEquals(SurprisingEnum32.ENUM_NAME, value); } }
相关文章推荐
- Joda.time.DateTime in Spring map to String as json restful response
- Joda-Time 简介
- 无敌好用的时间小插件 joda-time
- Joda-Time入门
- Joda-Time 简介
- Joda-Time 简介
- Java日期简化工具Joda-Time
- Joda-Time的使用以及其与jdk中时间类型的相互转换
- Joda-Time 简介(引用)
- Joda-Time 入门
- Joda-Time 简介
- joda-time-2.9.4.jar
- Joda-time是java处理时间非常棒的jar
- jodaTime一点用法记录
- Joda Time介绍
- 【类库】java时间操作类库:Joda-Time
- joda-time 日常使用效率测试(核心平台组-AUB)
- Joda-Time 用法
- Joda-Time 简介
- 使用joda-time工具类 计算时间相差多少 天,小时,分钟,秒