Java里日期转换及日期比较大小
1、比较日期的大小:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//创建日期转换对象hh:mm:ss为时分秒,年月日为yyyy-MM-dd
Date dt1 = df.parse("2017-11-13 15:00:00");//将字符串转换为date类型
Date dt2 = df.parse("2017-11-13 17:00:00");
if(dt1.getTime()>dt2.getTime()){……}//比较时间大小:如果dt1大于dt2
注意:字符串这里需要parse转一下日期类型,否则没有getTime()。
一种:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date dateBegin=df.parse(ruleStatus.getExecuteTime());
java.util.Date dateEnd=df.parse(tempRuleStatus.getExecuteTime());
if(dateBegin.getTime() > dateEnd.getTime()){} 二种:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String dateBegin=df.format(df.parse(ruleStatus.getExecuteTime()));
String dateEnd=df.format(df.parse(tempRuleStatus.getExecuteTime()));
if(Date.valueOf(dateBegin).getTime() > Date.valueOf(dateEnd).getTime()){}
注意:比较日期大小的时候需要注意12小时制和24小时制的区分(最好用24小时制)
//24小时制
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //12小时制
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
new Date("2017-11-15 11:34:14").getTime()
//
new Date("2017-11-15 12:08:12").getTime()
//
new Date("2017-11-15 00:08:12").getTime()
//
如果是12小时制,那么"2017-11-15 12:08:12"是按"2017-11-15 00:08:12"计算getTime(),所以会比"2017-11-15 11:34:14"小,这点就容易引起问题,需要注意。
2、java String类型与Date日期类型互相转换
插入数据库时,存入当前日期,当在界面展示时,出现进行转换成指定的格式,如****年**月**日,或****/**/**等等这种格式。对于以上要求,需要进行数据格式化操作。
(1)Date格式转化成String格式:
java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String date = formatter.format(new Date()); //格式化数据,格式化的格式为:****-**-**,如2014-10-30.
(2)String格式的数据转化成Date格式:
java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd ");
String s= "2011-07-09 ";
Date date = formatter.parse(s);
3、String转换为Timestamp:
两种方式将String类型的数据转换为Timestamp类型的数据
(1)使用Timestamp的valueOf()方法
String str = "2015-02-25 11:11:11";
Timestamp t = Timestamp.valueOf(str);
(2)使用Timestamp的构造方法:"yyyy-MM-dd hh:mm:ss":12小时制;"yyyy-MM-dd HH:mm:ss":24小时制
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
Date date = sf.parse(str);
System.out.println(date);
Timestamp t1 = new Timestamp(date.getTime());
System.out.println(t1);
} catch (ParseException e) {
e.printStackTrace();
}
4、解决数据库中插入时间丢失时分秒问题:
java.util.Date需要转换为java.sql.Date,常规的方式转换过来只可以得到年月日,如若要取得时分秒,可以用Date的子类Timestamp。
Java在向数据库中插入时间的时候,常常遇到时、分、秒丢失的情况,这种情况的发生一般是由于时间日期对象使用错误造成的。
java.util.Date是不能直接插入数据库中的,虽然它包含了日期和时分秒。java.sql.Date可以直接插入数据库,但是它只有日期而没有时间;java.sql.Time可以直接插入数据库,但是它只有时间,没有日期;以上这些往往不能满足我们的需要。
如果我们要插入日期和时间,那么就要相办法来使用java.sql.Timestamp来向数据库插入。java.sql.Timestamp可包含了日前和到毫秒的时间值,在程序中,我们常常是使用的java.util.Date,所以就要有解决的方法来实现。有如下方法将java.util.Date转化为java.sql.Timestamp:
public java.sql.Timestamp getTimestamp(Date date) {
return new java.sql.Timestamp(date.getTime());
}
这样,我们可以将我们使用的java.util.Date转化,然后插入数据库,便可以解决时、分、秒丢失的问题。
由此可以看到我们向数据库传入或传出值是尽量不要使用getDate方法或setDate方法,这样会丢失数据,解决的办法是:
(1)改用java.sql.Timestamp
(2)传日期形式的字符串,在存储过程接收到后在存储过程中使用to_date处理,对于输出的使用to_char处理
(3)传TO_DATE字符串进存储过程
我这里做了对应三种方法的处理,请选用。
Java里日期转换及日期比较大小的更多相关文章
- JAVA中日期转换和日期计算的方法
日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...
- js中时间戳与日期转换-js日期操作
常用的一些日期操作. 用js获取一个时间戳. <script type="text/javascript"> var date = new Date();//当前时间 ...
- JS 将字符串转换成日期类型
将字符串形式的日期转换成日期对象 var strTime="2011-04-16"; //字符串日期格式 var date= new Date(Date.par ...
- Javascript兼容各浏览器的日期转换
var date = new Date(Date.parse("2015-09-05".replace(/-/g,"/")));'2015-09-05'是无法被 ...
- C# 使用DateTime.TryParseExact将自定义日期类型转换成日期
在C#中如果将一个字符串类型的日期转换成日期类型很方便的 即使用Convert.ToDateTime("2015/01/01").ToString()或DateTime.TryPa ...
- java中json和字符串互转及日期转换 练习
一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons- ...
- java中的日期转换
在java中有两种Date对象,一种是java.sql.Date,另一种是java.util.Date 一.java.sql.Date对象: 这种Date对象使用了进行数据库操作的,它对应了数据库中的 ...
- 日期转换工具类 CommUtil.java
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...
- 日期转换类 DateConverter.java
package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.D ...
随机推荐
- Codeforces 359D Pair of Numbers | 二分+ST表+gcd
题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间 ...
- 块元素包裹img空隙问题
解决方法 1.img设为block2.img对齐方式vertical-align:bottom(middle/top),不是baseline就行3.父容器font-size:0或line-height ...
- 【HDU 5961 传递】
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission ...
- 用ServletContext读取.properties文件
在这里主要介绍ServletContext怎么从.properties文件中用键得到值的. ServletContext读取的.properties文件一般放在的位置有:1直接放在WebRoot下面. ...
- java 复习整理(二 数据类型和几种变量)
源文件声明规则 当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则. 一个源文件中只能有一个public类 一个源文件可以有多个非public类 源文件的名 ...
- hybird app(混合式app开发)cordova ionic 创建相应平台的app
hybird app(混合式app开发) 之ionic 框架平台 guide cordova 创建相应平台的app 1. npm install -g cordova //全局安装cordova-cl ...
- 道路修建(bzoj 2435)
Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. ...
- [网络流24题] COGS 运输问题1
11. 运输问题1 ★★☆ 输入文件:maxflowa.in 输出文件:maxflowa.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个工厂每天生 ...
- memcached 实现读锁
memcached锁,网上大多就介绍乐观锁(cas)[1.2.4以上版本,telnet连接上memcache使用status可以查看版本号].核心就是每次写入数据的时候使用 cas($cas_toke ...
- 转载~Linux 平台下阅读源码的工具
Linux 平台下阅读源码的工具 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码在Windows下有sourceinsight这 ...