String字符串类型时间比较(根据时间判断返回 ‘已结束’或‘进行中‘’)

简介: String字符串类型时间比较(根据时间判断返回 ‘已结束’或‘进行中‘’)

简介:当时要写一个状态判断,然后自己就写出了一个时间比较的方法。当结束时间大于今天返回已结束,否则就是实习中。

主要是利用的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";
    }
    }
}

相关文章
|
4月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
67 1
|
16天前
|
索引 Python
String(字符串)
String(字符串)。
25 3
|
2月前
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
43 4
|
2月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
56 4
|
2月前
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
37 5
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
27 3
|
2月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
44 3
|
3月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
4月前
|
C# 开发者 UED
WPF开发者必备秘籍:深度解析文件对话框使用技巧,打开与保存文件原来如此简单!
【8月更文挑战第31天】在WPF应用开发中,文件操作是常见需求。本文详细介绍了如何利用`Microsoft.Win32`命名空间下的`OpenFileDialog`和`SaveFileDialog`类来正确实现文件打开与保存功能。通过示例代码展示了如何设置文件过滤器、初始目录等属性,并使用对话框进行文件读写操作。正确使用文件对话框能显著提升用户体验,使应用更友好易用。
91 0
|
4月前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
160 0