简介:当时要写一个状态判断,然后自己就写出了一个时间比较的方法。当结束时间大于今天返回已结束,否则就是实习中。
主要是利用的compareTo方法:
左边的参数(begDate)如果小于右边的参数(endData)返回-1;反之返回1;相等返回0
System.out.println("参数 : "+begDate.compareTo(endData));
代码:
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; import java.time.temporal.Temporal; import java.util.Date; public class ShiJianBiJiao { public static void main(String[] aegs) throws ParseException { // ShiJianBiJiao shiJianBiJiao = new ShiJianBiJiao(); /*** * 第一个参数为开始时间, * 第二个为结束时间, * 当结束时间大于开始时间, * 并且结束时间大于今天 * 返回"已结束" * **/ //第一个参数为开始时间,第二个为结束时间。 当结束时间大于开始时间,并且结束时间大于今天返回"已结束" System.out.println(Timecompare("2022-08-01", "2023-09-05")); } public static String Timecompare(String begTime,String endTime) throws ParseException { try { //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date begDate = sdf.parse(begTime);//开始时间 Date endData = sdf.parse(endTime);//结束时间 SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd"); String aString = dateFormat.format(new Date()); System.out.println("开始时间: "+dateFormat.format(begDate)); System.out.println("结束时间: "+dateFormat.format(endData)); System.out.println(LocalDate.now()); //比较结束时间是否早于开始时间 if (begDate.compareTo(endData) > 0) { return "开始时间大于结束时间";//0代表开始时间大于结束时间 } /** * 左边的参数(begDate)如果小于右边的参数(endData)返回-1 * 反之返回1 * 相等返回0 * * */ System.out.println("参数 : "+begDate.compareTo(endData)); /** * 比较结束时间是否大于当前时间 * (可以将aString 换成 LocalDate.now().toString()) * * */ if(endData.compareTo(new Date()) < 0 && !endTime.equals(aString)){ return "已结束"; } return "进行中"; } catch (Exception e) { StackTraceElement stackTraceElement =e.getStackTrace()[0]; System.out.println("异常信息:"+e); return "请输入正确的时间格式:YYYY-MM-DD"; } } }