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里日期转换及日期比较大小的更多相关文章

  1. JAVA中日期转换和日期计算的方法

    日期的格式有很多形式,在使用过程中经常需要转换,下面是各种类型转换的使用例子以及日期计算方法的例子. 一.不同格式日期相互转换方法 public class TestDateConvertUtil { ...

  2. js中时间戳与日期转换-js日期操作

    常用的一些日期操作. 用js获取一个时间戳. <script type="text/javascript"> var date = new Date();//当前时间 ...

  3. JS 将字符串转换成日期类型

    将字符串形式的日期转换成日期对象 var strTime="2011-04-16"; //字符串日期格式           var date= new Date(Date.par ...

  4. Javascript兼容各浏览器的日期转换

    var date = new Date(Date.parse("2015-09-05".replace(/-/g,"/")));'2015-09-05'是无法被 ...

  5. C# 使用DateTime.TryParseExact将自定义日期类型转换成日期

    在C#中如果将一个字符串类型的日期转换成日期类型很方便的 即使用Convert.ToDateTime("2015/01/01").ToString()或DateTime.TryPa ...

  6. java中json和字符串互转及日期转换 练习

    一:以下是用到的jar名称: commons-beanutils-1.6.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons- ...

  7. java中的日期转换

    在java中有两种Date对象,一种是java.sql.Date,另一种是java.util.Date 一.java.sql.Date对象: 这种Date对象使用了进行数据库操作的,它对应了数据库中的 ...

  8. 日期转换工具类 CommUtil.java

    package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...

  9. 日期转换类 DateConverter.java

    package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.D ...

随机推荐

  1. [THUWC2017][bzoj5020] 在美妙的数学王国中畅游 [LCT+泰勒展开]

    题面 LOJ传送门 思路 这里很重要 它提示我们,把给定的三个函数泰勒展开,并用LCT维护每一项泰勒展开式的值,维护十几项就满足了题目的精度要求 我们考虑一个函数在0位置的泰勒展开 $f(x)=\su ...

  2. Computer(hdu 2196)

    题意:给出一棵树,求出每个点与距离它最远的点的距离. /* 树形DP 先把无根树转为有根树,对于一个节点i来说,与它相距最远的点有两种可能,一是在它的子树中,二是不在,我们分别用f[i][0]和f[i ...

  3. Spring Cloud配置文件加载优先级简述

    Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方:如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等:本文 ...

  4. Socket学习进阶之基础通信

    服务端代码: using System; using System.Text; using System.Net; using System.Net.Sockets; public class ser ...

  5. Error C1189: #error: Please use the /MD switch for _AFXDLL builds(转)

    原文转自 https://www.cnblogs.com/zwh0214/p/6048360.html 在VS 2013中编译程序时出现错误: 错误提示1: error C1189: #error : ...

  6. python任意编码转utf8或者unicode

    # encoding: utf-8 ''' Created on 2015年2月8日 @author: 张鹏程 aprial@163.com @copyright: 版权所有, 尊重劳动成功, 转载与 ...

  7. linux系统调用实现代码分析【转】

    转自:http://linux.chinaunix.net/doc/kernel/2001-07-30/637.shtml 启动早就读完,现在为了写笔记再从启动之后粗略的大体读一遍,基本就是几个大模块 ...

  8. UVA 11045 My T-shirt suits me

    一开始就想到网络流..后来一想暴力能不能过.自己写的T了.看了别人有暴力过的. 暴力的思路就是6进制数字表示给予的衣服的数量.然后每个人的需求表示成01 的6位串然后爆搜. 网络流就建一个源一个汇 然 ...

  9. Linux内核驱动之延时---内核超时处理【转】

    转自:http://blog.chinaunix.net/uid-24219701-id-3288103.html 内核超时处理 jiffies 计数器 定时器中断由系统定时硬件以规律地间隔产生; 这 ...

  10. @Transactional注解事务不起作用

    @Transactional注解事务不起作用 问题:今天在项目中碰到一个事务问题,使用@Transactional注解事务,抛出异常不会滚. 解决一:https://blog.csdn.net/u01 ...