【Java】比对两个以字符串形式表示的时期是否相差超过1天

数据库存放的日期,即使是以字符串表示的,你也可以利用《【Mysql】求出离最近相差X天的项,sql语句关于日期的比对》(点击打开链接)中所介绍的那个timestampdiff函数比对,日期是否相差超过一天。

如果在Java中要比对两个以字符串形式表示的日期是否相等,

比如比对两个以"yyyy-MM-dd HH:mm:ss"与字符串String形式表示的日期,是否相等

那可以先去除"-"、":"、" "空格,等东西,截取前8个字符串,也就是"yyyy-MM-dd"部分,之后得到一个8位的long整形,两个日期相减就可以了。

以下的程序判断了"2019-09-06 16:04:07"与当前日期"2015-5-7"是否是同一天。

package timeDiffTest;
import java.text.SimpleDateFormat;
import java.util.Date;

class Util {
	public static boolean stringTimeDayDiff(String stringTime1, String stringTime2) {
		Long dateTime1 = Long.parseLong(stringTime1.replaceAll("-", "")
				.replaceAll(":", "").replace(" ", "").substring(0, 8));
		Long dateTime2 = Long.parseLong(stringTime2.replaceAll("-", "")
				.replaceAll(":", "").replace(" ", "").substring(0, 8));
		return (dateTime1 == dateTime2) ? true : false;
	}
}

public class timeDiff {
	public static void main(String[] args) {
		String dbTime = "2019-09-06 16:04:07";
		String nowTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
				.format(new Date(System.currentTimeMillis()));
		System.out.println(Util.stringTimeDayDiff(dbTime,nowTime));
	}
}

运行结果如下:

时间: 2024-08-07 01:57:40

【Java】比对两个以字符串形式表示的时期是否相差超过1天的相关文章

Java中比较两个字符串是否相等的问题

java中判断两个字符串是否相等的问题 我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是equals(); 例:A字符串和B和字符串比较: if(A.equals(B)){ } 返回true 或false. String 的equals 方法用于比较两个字符串是否相等.由于字符串是对象类型,所以不能用简单的"=="判断.

Java比较两个String字符串数组

比较两个String字符串数组元素差异 1.工具类 package io.renren.common.utils; import org.apache.commons.lang3.ArrayUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @program: ivvdata-security * @description:

Java中的两个关键字——super、this

Java中的两个关键字——super.this 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器 使用super关键字注意事项: 1.当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super . 属性 2. super只能应用在成员方法和构造方法中,不能用在静态方法中(和this是一样的) 3.如果在构造方法中使用必须放在

java:常用的两种设计模式(单例模式和工厂模式)

一.单例模式:即一个类由始至终只有一个实例.有两种实现方式(1)定义一个类,它的构造方法是私有的,有一个私有的静态的该类的变量在初始化的时候就实例化,通过一个公有的静态的方法获取该对象.Java代码 1. //单例模式的第一种形式    2. public class Singleton01 {    3.    4.     // 私有的静态属性    5.     private static Singleton01 instance = new Singleton01();    6.  

JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符

// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * 这里需要注意 a++ 和 ++a 的区别,后面说; */ /* public class Javase{ public static void main(String[] args){ int a = 10; int b = 20; int c = 30; System.out.println( a

Java float保留两位小数或多位小数

转自:Java float保留两位小数或多位小数 方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分

Java用split函数进行分割字符串

在java中,我们常常需要对字符串进行分割,使用split方法把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); fo

[Java基础] Java float保留两位小数或多位小数

方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算. float price=

python中执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)

前阵子一直在思考一个问题,就是如何让用户在图形界面上输入的代码(输入的代码为字符串),成为代码的一部分而运行起来,恰逢看python爬虫的视频教程的时候,看到了使用eval函数,之后查找到了该文章,解决了我思考的问题. @文章来源:https://my.oschina.net/duhaizhang/blog/66048 Python有时需要动态的创造Python代码,然后将其作为语句执行  或  作为表达式计算. exec用于执行存储在字符串中的Python代码.   1. 语句与表达式的区别: