史上最全java日期转换

史上最全java日期转换

使用jodaTime,满足各种转化姿势

依赖

引入jodaTime依赖

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.9.9</version>
</dependency>

Mysql日期和时间

mysql类型对应java类型日期或时间格式日期或时间范围默认值占用空间
YEARjava.sql.DateYYYY1901 ~ 215500001 bytes
TIMEjava.sql.TimeHH:MM:SS-838:59:59 ~ 838:59:5900:00:003 bytes
DATEjava.sql.DateYYYY-MM-DD1000-01-01 ~ 9999-12-30000-00-004 bytes
TIMESTAMPjava.sql.TimestampYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC000000000000004 bytes
DATETIMEjava.sql.TimestampYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:590000-00-00 00:00:008 bytes

列举这个表格,是为了快速查找对应类型,方便我们建立java语言与SQL语言的连接通道。

转换

时间类型转化的场景很多,下面我举几个例子,基本解决了大多数场景,希望大家能举一反三

  1. yyyy-MM-dd 转 java.sql.Date
String fmtPattern = "yyyy-MM-dd";
DateTimeFormatter fmt = DateTimeFormat.forPattern(fmtPattern);
DateTime dateTime = fmt.parseDateTime("2020-08-10");
java.sql.Date date = new java.sql.Date(dateTime.getMillis());
System.out.println(date.toString()); // 2020-08-10
  1. YYYY-MM-DD HH:MM:SS 转 java.util.Date

    String fmtPattern = "yyyy-MM-dd HH:mm:ss";
    DateTimeFormatter fmt = DateTimeFormat.forPattern(fmtPattern);
    DateTime dateTime = fmt.parseDateTime("2020-08-10 10:30:20");
    java.util.Date date = new java.util.Date(dateTime.getMillis());
    System.out.println(date.toString()); // Mon Aug 10 10:30:20 CST 2020
    
  2. YYYY-MM-DD HH:MM:SS 转 java.util.Timestamp

String fmtPattern = "yyyy-MM-dd HH:mm:ss";
DateTimeFormatter fmt = DateTimeFormat.forPattern(fmtPattern);
DateTime dateTime = fmt.parseDateTime("2020-08-10 10:30:20");
java.sql.Timestamp timestamp = new Timestamp(dateTime.getMillis());
System.out.println(timestamp.toString()); // 2020-08-10 10:30:20.0
System.out.println(timestamp.getTime()); // 1597026620000
  1. HH:MM:SS 转 java.sql.Time

    String fmtInput = "HH:mm:ss";
    DateTimeFormatter fmt = DateTimeFormat.forPattern(fmtInput);
    DateTime dateTime = fmt.parseDateTime("11:30:20");
    Time time = new Time(dateTime.toDate().getTime());
    System.out.println(time.toString()); // 11:30:20
    
  2. YYYY 转 java.sql.Date

    String fmtPattern = "yyyy";
    DateTimeFormatter fmt = DateTimeFormat.forPattern(fmtPattern);
    DateTime dateTime = fmt.parseDateTime("2020");
    java.sql.Date date = new Date(dateTime.getMillis());
    System.out.println(date.toString()); // 2020-01-01
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值