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");
Time()&Time()){……}//⽐较时间⼤⼩:如果dt1⼤于dt2
  注意:字符串这⾥需要parse转⼀下⽇期类型,否则没有getTime()。
⼀种:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date dateBegin=df.ExecuteTime());
java.util.Date dateEnd=df.ExecuteTime());
Time() > Time()){}
⼆种:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String dateBegin=df.format(df.ExecuteTime()));
String dateEnd=df.format(df.ExecuteTime()));
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()
//1510716854000
new Date("2017-11-15 12:08:12").getTime()
//1510718892000
java时间日期格式转换
new Date("2017-11-15 00:08:12").getTime()
//1510675692000
  如果是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格式:
String date = formatter.format(new Date());  //格式化数据,格式化的格式为:****-**-**,如2014-10-30.
(2)String格式的数据转化成Date格式:
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 Time());
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.Time());
}
  这样,我们可以将我们使⽤的java.util.Date转化,然后插⼊数据库,便可以解决时、分、秒丢失的问题。
  由此可以看到我们向数据库传⼊或传出值是尽量不要使⽤getDate⽅法或setDate⽅法,这样会丢失数据,解决的办法是:
  (1)改⽤java.sql.Timestamp
  (2)传⽇期形式的字符串,在存储过程接收到后在存储过程中使⽤to_date处理,对于输出的使⽤to_char处理
  (3)传TO_DATE字符串进存储过程
  我这⾥做了对应三种⽅法的处理,请选⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。