首页 > 编程语言 >Java字符串转换为日期和时间比较大小

Java字符串转换为日期和时间比较大小

时间:2023-09-21 10:01:20浏览次数:46  
标签:24 java df long 60 Date 日期 字符串 Java


方法一:

DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); 
String dateBegin=fmt.format(carrierCommand.getDateBegin()); 
String dateEnd=fmt.format(carrierCommand.getDateEnd()); 
//如果获得的日期格式不是'2008-05-22',就必须要格式化一下日期 
String dateBegin = request.getParameter("dateBegin"); 
String dateEnd = request.getParameter("dateEnd"); 
if(java.sql.Date.valueOf(dateBegin).after(java.sql.Date.valueOf(dateEnd))){ 
//起始日期大于结束日期 
errors.rejectValue("dateEnd", null, "起始日期必须小于结束日期!"); 
} 
StringBuffer timeBegin = new StringBuffer(); 
StringBuffer timeEnd = new StringBuffer(); 
timeBegin.append(request.getParameter("timeBegin")); 
timeEnd.append(request.getParameter("timeEnd")); 
timeBegin.append(":00"); 
timeEnd.append(":00"); 
if(java.sql.Date.valueOf(dateBegin).equals(java.sql.Date.valueOf(dateEnd))) 
{ //起始日期等于结束日期 
if(java.sql.Time.valueOf(timeBegin.toString()).equals(java.sql.Time.valueOf 
(timeEnd.toString())))//时间相同 
{ 
errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!"); 
} 
if(java.sql.Time.valueOf(timeBegin.toString()).after(java.sql.Time.valueOf 
(timeEnd.toString())))//时间相同 
{ 
errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!"); 
} 
}

方法二:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; 
/**
*
* @author hp
*/
public class test {
public static void main(String args[]) {
int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
System.out.println("i=="+i);
}
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
}

方法三:
比如:现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
java计算时间差及比较时间大小
比如:现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
一:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = df.parse("2004-03-26 13:31:40");
Date d2 = df.parse("2004-01-02 11:30:24");
long diff = d1.getTime() - d2.getTime();
long days = diff / (1000 * 60 * 60 * 24);
}
catch (Exception e)
{
}

二:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse("2004-03-26 13:31:40");
java.util.Date date=df.parse("2004-01-02 11:30:24");
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");

三:

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date begin=dfs.parse("2004-01-02 11:30:24");
java.util.Date end = dfs.parse("2004-03-26 13:31:40");
long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
long day1=between/(24*3600);
long hour1=between%(24*3600)/3600;
long minute1=between%3600/60;
long second1=between%60/60;
System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");

====================================================
java 比较时间大小

String s1="2008-01-25 09:12:09";
String s2="2008-01-29 09:12:11";
java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Calendar c1=java.util.Calendar.getInstance();
java.util.Calendar c2=java.util.Calendar.getInstance();
try
{
c1.setTime(df.parse(s1));
c2.setTime(df.parse(s2));
}catch(java.text.ParseException e){
System.err.println("格式不正确");
}
int result=c1.compareTo(c2);
if(result==0)
System.out.println("c1相等c2");
else if(result<0)
System.out.println("c1小于c2");
else
System.out.println("c1大于c2");

标签:24,java,df,long,60,Date,日期,字符串,Java
From: https://blog.51cto.com/u_16255870/7548772

相关文章

  • java并发
    符合死锁的四个条件:互斥条件:一个时刻一个线程一个资源请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:线程已获得的资源,在未用完之前,不能被其他线程剥夺。循环等待条件:若干线程形成头尾相接的循环等待资源关系。如何预防和避免线程死......
  • 4.5 Java创建一个学生类
    创建一个表示学生的实体类Student,其中有学生姓名、性别和年龄信息。要求使用属性来表示学生信息,最终编写测试代码。首先定义一个名为Student的类,代码如下: 1publicclassStudent{2//学生类3} 在类中通过属性定义学生、性别和年龄,代码如下:1publicclassSt......
  • 4.2 Java认识类和对象
    在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一个个具体的东西。所以说类是对象的抽象,对象是类的具体。让我们来看看人类所具有的一些特征,这些特征包括属性(一些参数、数值)以及方法(一些行为,他能干什么)。......
  • 4.3 Java类的定义及定义类时可用的关键字
    类是 Java 中的一种重要的引用数据类型,也是组成Java程序的基本要素,因为所有的Java程序都是基于类的。本节介绍如何定义类。在Java中定义一个类,需要使用 class关键字、一个自定义的类名和一对表示程序体的大括号。完整语法如下:[public][abstract|final]class<class_nam......
  • 【面试题精讲】JavaOptional用法
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址文章更新计划系列文章地址Java8引入了Optional类,用于解决空指针异常(NullPointerException)的问题。Optional是一个容器类,可以包含一个非空的值或者表示值......
  • 【赠书活动 -第01期】-〖Java编程思想(第四版)〗
    【赠书活动-第01期】-〖Java编程思想(第四版)〗活动时间:2023年9月21日~2023年9月30日参与方式:https://m.hlcode.cn/?id=NK1fWUR......
  • java中private是什么意思
    在java中,private的意思为“私有的”,是一种访问控制修饰符,用于修饰类、属性和方法。用private修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用;因此,private修饰符具有最高的保护级别。......
  • java stream流的高端用法
    并行流(ParallelStream):Stream提供了parallel()方法,可以将普通的顺序流转换为并行流,以便使用多线程并发执行操作。例如:list.parallelStream().filter(...).map(...).forEach(...);并行流适用于对大规模数据进行操作,并且可以通过并行计算充分利用多核处理器的能力......
  • java stream流的高端用法
    并行流(ParallelStream):Stream提供了parallel()方法,可以将普通的顺序流转换为并行流,以便使用多线程并发执行操作。例如:list.parallelStream().filter(...).map(...).forEach(...);并行流适用于对大规模数据进行操作,并且可以通过并行计算充分利用多核处理器的能力......
  • Kotlin逆袭Java,能否撼动其地位?
    前言近日,TIOBE官网近日公布了2023年9月的编程语言排行榜。Python又一次排行第一,占比14.16%、C语言排行第二,占比11.27%、C++排行榜单第三,占比为10.65%。意外的是,对标Java的Kotlin却挤进前20,占比0.9%。与Java一样,Kotlin也是用于Android应用程序开发的编程语言,作为2016年的......