Joda-Time

shell date:

1.date -d  @1500000000
20170714日 星期五 10:40:00 CST
date -d  @1400000000
20140514日 星期三 00:53:20 CST
date -d  @1000000000
20010909日 星期日 09:46:40 CST
date -d  @1
19700101日 星期四 08:00:01 CST
date -d  @0
19700101日 星期四 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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Joda-Time 是一个 Java 编程语言的日期和时间处理库,它提供了简化日期和时间操作的功能。使用 Joda-Time,你可以轻松地进行日期和时间的计算、格式化、解析等操作。 下面是 Joda-Time 的一些常见用法: 1. 创建日期对象: ```java DateTime now = new DateTime(); // 创建当前日期和时间对象 DateTime specificDate = new DateTime(2022, 1, 1, 0, 0, 0); // 创建指定日期和时间对象 ``` 2. 获取日期和时间的各个部分: ```java int year = now.getYear(); // 获取年份 int month = now.getMonthOfYear(); // 获取月份 int day = now.getDayOfMonth(); // 获取日期 int hour = now.getHourOfDay(); // 获取小时 int minute = now.getMinuteOfHour(); // 获取分钟 int second = now.getSecondOfMinute(); // 获取秒数 ``` 3. 格式化日期和时间: ```java String formattedDate = now.toString("yyyy-MM-dd"); // 将日期格式化为指定格式的字符串 String formattedTime = now.toString("HH:mm:ss"); // 将时间格式化为指定格式的字符串 String formattedDateTime = now.toString("yyyy-MM-dd HH:mm:ss"); // 将日期和时间格式化为指定格式的字符串 ``` 4. 解析字符串为日期对象: ```java DateTime parsedDate = DateTime.parse("2022-01-01"); // 解析字符串为日期对象 ``` 5. 对日期进行计算和操作: ```java DateTime modifiedDate = now.plusDays(7); // 将日期加上指定天数 DateTime result = now.minusYears(1).plusMonths(3); // 对日期进行复合操作 ``` 以上是 Joda-Time 的一些基本用法,你可以根据自己的需求进一步探索该工具类的其他功能。请注意,Joda-Time 在 Java 8 及更高版本中已经被官方的 java.time 包所取代,因此在使用新的 Java 版本时,你可以直接使用 java.time 包中的类来处理日期和时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值