引入org.joda.time.DateTime
1
2
3
4
5
|
< dependency > < groupId >joda-time</ groupId > < artifactId >joda-time</ artifactId > < version >2.9.8</ version > </ dependency > |
1.初始化时间
1
2
|
DateTime time = new DateTime( 2018 , 4 , 23 , 23 , 7 , 18 , 888 ); // 2018年4月23日23点7分18秒888毫秒 |
2.按格式输出时间(将DateTime格式转换为字符串)
1
|
String time = dateTime.toString( "yyyy-MM-dd hh:mm:ss.SSSa" ); |
小写hh是12小时制,大写HH是24小时制
3.将字符串转换为DateTime格式
1
2
|
DateTimeFormatter format = DateTimeFormat .forPattern( "yyyy-MM-dd HH:mm:ss" ); DateTime dateTime = DateTime.parse( "2018-4-23 23:12:16" , format); |
4.取得当前时间
1
|
DateTime time= new DateTime(); |
5.计算两个日期间隔的天数
1
2
3
|
LocalDate start= new LocalDate( 2018 , 4 , 23 ); LocalDate end= new LocalDate( 2019 , 06 , 16 ); int days = Days.daysBetween(start, end).getDays(); |
6.增加日期
1
2
3
4
5
6
7
8
|
DateTime dateTime = DateTime.parse( "2018-04-23" ); dateTime = dateTime1.plusDays( 1 ); dateTime = dateTime1.plusHours( 2 ); dateTime = dateTime1.plusMinutes( 3 ); dateTime = dateTime1.plusMonths( 4 ); dateTime = dateTime1.plusSeconds( 5 ); dateTime = dateTime1.plusWeeks( 6 ); dateTime = dateTime1.plusYears( 7 ); |
7.减少日期
1
2
3
4
|
DateTime dateTime = DateTime.parse( "2018-04-23" ); dateTime = dateTime1.minusMillis( 1 ); dateTime = dateTime1.minusHours( 1 ); dateTime = dateTime1.minusSeconds( 1 ); |
8.判断是否闰月
1
2
3
|
DateTime time = new DateTime(); org.joda.time.DateTime.Property month = time.monthOfYear(); System.out.println( "是否闰月:" + month.isLeap()); |
9.DateTime与Date转换
1
2
3
4
|
DateTime time = new DateTime( new Date()); Date date = time.toDate(); DateTime time2 = new DateTime(System.currentTimeMillis()); time2.getMillis(); |
10.DateTime与Calendar转换
1
|
Calendar calendar = Calendar.getInstance(); |
补充:
字符串和java.utils.Date相互转换
字符串转化为Date类型
1
2
3
4
5
6
7
8
9
10
|
DateFormat format = new SimpleDateFormat( "yyyy-MM-dd kk:mm:ss" ); // 这里填写的是想要进行转换的时间格式 String str = "2016-12-11 17:17:10" ; // 时间字符串 java.utils.Date date = null ; try { date = format.parse(str); } catch (Exception e){ e.printStackTrace(); } |
Date类型转化为字符串
1
2
3
4
|
DateFormat format = new SimpleDateFormat( "yyyy-MM-dd kk:mm:ss" ); // 这里填写的是想要进行转换的时间格式 Date date = new java.utils.Date(); // 获取当前时间 String str = format.format(date); // str = "2016-12-11 17:17:10" |
java.sql.Date向数据库写入日期
这里就需要java.sql.Date和java.utils.Date进行相互转换了,这个转换一般比较容易,利用构造方法和.getTime() 方法进行转化。
1
2
|
java.utils.Date date = new java.utils.Date(); // 获取当前时间 java.sql.Date sql_date = new java.sql.Date(date.getTime()); //转换成java.sql.Date |
接着使用PreparedStatement 向数据库中写入时间,即可。
1
|
ps.setDate( 1 , new java.sql.Date(date.getTime())); // 设置项 |
java.sql.Timestamp向数据库中写入时间
需要注意的是,上边一种方法只能将日期写入到数据库中,为了能够将时间精确到s甚至是ms。我们需要使用java.sql.Timestamp 类型。
java.sql.Timestamp 类型的构造函数也可以使用Long进行初始化
1
2
|
Date date = new Date(); Timestamp timeStamp = new Timestamp(date.getTime()); |
故在生成java.utils.Date时,将时间精确到s,然后使用预编译语句执行SQL语句
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Date date = new Date(); Timestamp timeStamp = new Timestamp(date.getTime()); sql= "insert into flowmeter2(total,std_flow,temp,press,time) values(?,?,?,?,?)" ; try { PreparedStatement ps = connection.prepareStatement(sql); ps.setString( 1 , total); ps.setString( 2 , std_flow); ps.setString( 3 , temp); ps.setString( 4 , press); ps.setTimestamp( 5 , timeStamp); ps.executeUpdate(); System.out.println( "添加成功!" ); connection.close(); |
到此这篇关于java中的DateTime的具体使用的文章就介绍到这了,更多相关java DateTime使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/jcq521045349/article/details/53574177