J2SE-日期比较

方法一:Date.before(),Date.after(),Date.equals()

public static void main(String[] args) throws ParseException {
		
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    Date date1 = sdf.parse("2009-12-31");
	    Date date2 = sdf.parse("2010-01-31");

	    System.out.println(sdf.format(date1));
	    System.out.println(sdf.format(date2));

	    if (date1.compareTo(date2) > 0) {
	        System.out.println("Date1 is after Date2");
	    } else if (date1.compareTo(date2) < 0) {
	        System.out.println("Date1 is before Date2");
	    } else if (date1.compareTo(date2) == 0) {
	        System.out.println("Date1 is equal to Date2");
	    } else {
	        System.out.println("How to get here?");
	    }
}


方法二:Date.compareTo

public static void main(String[] args) throws ParseException {
		
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    Date date1 = sdf.parse("2009-12-31");
	    Date date2 = sdf.parse("2010-01-31");

	    System.out.println(sdf.format(date1));
	    System.out.println(sdf.format(date2));

	    if (date1.after(date2)) {
	        System.out.println("Date1 is after Date2");
	    }

	    if (date1.before(date2)) {
	        System.out.println("Date1 is before Date2");
	    }

	    if (date1.equals(date2)) {
	        System.out.println("Date1 is equal Date2");
	    }
}


方法三:Calender.before(),Calender.after(),Calender.equals()

public static void main(String[] args) throws ParseException {
		
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    Date date1 = sdf.parse("2009-12-31");
	    Date date2 = sdf.parse("2010-01-31");

	    System.out.println(sdf.format(date1));
	    System.out.println(sdf.format(date2));

	    Calendar cal1 = Calendar.getInstance();
	    Calendar cal2 = Calendar.getInstance();
	    cal1.setTime(date1);
	    cal2.setTime(date2);

	    if(cal1.after(cal2)){
	        System.out.println("Date1 is after Date2");
	    }

	    if(cal1.before(cal2)){
	        System.out.println("Date1 is before Date2");
	    }

	    if(cal1.equals(cal2)){
	        System.out.println("Date1 is equal Date2");
	    }

}

https://www.jianshu.com/p/7a65986e5bfe

http://blog.youkuaiyun.com/u013991521/article/details/60471545


<think> 我们正在解决Eclipse启动时的BundleException错误,具体是关于org.eclipse.core.runtime包因执行环境约束缺失而无法解析。 根据引用[1]和[5]:错误信息提示缺少`CDC-1.0/Foundation-1.0,J2SE-1.3`的执行环境。这表明Eclipse版本(或插件)要求的执行环境与当前Java运行环境不匹配。 引用[5]提到:当前JDK版本太高,而Eclipse版本较老(要求J2SE-1.3或1.4),因此需要降低JDK版本。 解决方案: 1. 安装一个符合要求的较低版本的JDK(如JDK 1.3, 1.4或至少兼容J2SE 1.3的版本)。 2. 配置Eclipse使用该JDK。 具体步骤: 步骤1:下载并安装低版本JDK - 例如,从Oracle官网下载JDK 1.4或1.5(注意:Eclipse 3.2要求的最低是J2SE 1.3,但通常使用1.4或1.5比较合适) 步骤2:配置Eclipse使用该JDK - 编辑Eclipse的配置文件`eclipse.ini`,在文件开头指定虚拟机路径: ``` -vm C:\path\to\jdk1.4\bin\javaw.exe (Windows示例)-vm /path/to/jdk1.4/bin/java (Linux/macOS示例) ``` - 注意:`-vm`参数必须单独一行,后面一行是路径。 步骤3:检查环境变量 - 确保系统环境变量`JAVA_HOME`指向这个低版本JDK,并且`PATH`环境变量中该JDK的路径位于其他JDK之前。 - 在命令行中运行`java -version`确认版本。 步骤4:如果步骤3中`java -version`显示的不是低版本,根据引用[5]的建议: - 使用`where java`(Windows)或`which java`(Linux/macOS)查找所有java可执行文件的路径。 - 删除或重命名高版本JDK的路径(如果环境变量设置正确则不需要,否则调整环境变量顺序)。 另外,引用[3]提供了另一种思路(虽然针对的是maven项目的JRE版本,但原理相似): - 我们也可以尝试修改Eclipse运行时的执行环境配置(但通常不如直接使用低版本JDK简单)。 注意:由于Eclipse 3.2是一个非常老的版本(发布于2006年),建议升级Eclipse到较新版本(如果项目允许)。但是,如果必须使用这个旧版本,则只能使用旧版JDK。 如果上述方法不奏效,可以考虑以下替代方案: - 使用兼容模式:在Windows系统中,可以尝试右键点击Eclipse可执行文件,选择“属性”→“兼容性”→以兼容模式运行(如Windows XP)并尝试。 引用[2]和[4]提到Eclipse 3.1支持J2SE 5.0,而Eclipse 3.2应该也支持,但这里错误要求的是J2SE-1.3,说明这个插件(org.eclipse.core.runtime_3.8.0)可能是一个较新的插件被放到了旧版Eclipse中?注意:这个插件版本(3.8.0)是Eclipse 4.2(Juno)版本的,而Eclipse 3.2的core.runtime版本应该是3.2.x。所以,可能的原因是插件版本与Eclipse平台版本不匹配。 因此,另一个解决方案是: - 检查Eclipse的插件(plugins)目录,确认是否混入了不兼容的插件(如从高版本Eclipse中复制过来的插件)。如果是,删除这个不兼容的插件(org.eclipse.core.runtime_3.8.0.v20120912-155025.jar)。 总结:主要解决方案有两种: 1. 使用低版本JDK(如JDK 1.4或1.5)来运行Eclipse 3.2。 2. 检查并删除插件目录下不兼容的高版本插件(特别是core.runtime插件)。 请根据实际情况选择。 如果用户需要下载旧版JDK,可以在Oracle官网的归档页面找到:https://www.oracle.com/java/technologies/downloads/archive/ 生成相关问题: </think> ### 解决 Eclipse `org.osgi.framework.BundleException` 错误的方法 #### 🔍 错误原因分析 该错误表明 `org.eclipse.core.runtime` 插件(v3.8.0)无法加载,因其依赖的执行环境不满足: 1. **环境约束冲突**:插件要求 `CDC-1.0/Foundation-1.0` 或 `J2SE-1.3` 环境,但当前 JDK 版本过高 [^1][^5] 2. **版本不兼容**: - Eclipse 3.2.0(2006年发布)设计支持 J2SE 1.3-1.5 [^2][^4] - `core.runtime_3.8.0` 实际属于 Eclipse 4.2+(2012年),被错误混装到旧平台 [^1] 3. **环境配置错误**: - 系统环境变量指向高版本 JDK - Eclipse 未明确指定兼容的 JVM #### ✅ 解决方案(两种核心方法) ##### 方案1:降级 JDK(推荐) **步骤**: 1. **卸载高版本 JDK** 清理现有高版本(如 JDK 8+),通过控制面板或命令行卸载 2. **安装兼容 JDK** 下载 JDK 1.4.2(官方归档): ```bash # 验证安装(需显示 1.4.x) java -version ``` 3. **配置环境变量** 在系统变量中设置: ```properties JAVA_HOME=C:\j2sdk1.4.2_19 PATH=%JAVA_HOME%\bin;... ``` 4. **启动 Eclipse** 直接运行 `eclipse.exe`,无需修改配置 > 注意:若 `java -version` 仍显示高版本,检查并移除其他 JDK 路径(引用[5]) ##### 方案2:修复插件版本(高级) **步骤**: 1. 定位插件目录: `{ECLIPSE_HOME}/plugins/org.eclipse.core.runtime_3.8.0.v20120912-155025.jar` 2. 删除不兼容插件: ```bash rm plugins/org.eclipse.core.runtime_3.8.0*.jar ``` 3. 安装正确版本: 下载 Eclipse 3.2 专用插件包([官方存档](https://archive.eclipse.org/eclipse/downloads/)),放入 `plugins/` 4. 清理缓存: 删除 `configuration/org.eclipse.osgi/` 下的临时文件 #### ⚠️ 特殊情况处理 - **混合开发环境**: 在 `eclipse.ini` 首行添加 JVM 路径: ```ini -vm C:\j2sdk1.4.2_19\bin\javaw.exe ``` - **Maven 项目支持**: 在 `settings.xml` 添加 JDK 1.4 配置(引用[3]): ```xml <profile> <id>jdk-1.4</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <maven.compiler.source>1.4</maven.compiler.source> <maven.compiler.target>1.4</maven.compiler.target> </properties> </profile> ``` #### 📊 版本兼容对照表 | Eclipse 版本 | 发布日期 | 支持 JDK | `core.runtime` 版本 | |--------------|----------|----------------|---------------------| | 3.2.0 | 2006 | J2SE 1.4-1.5 | 3.2.x | | 4.2 (Juno) | 2012 | Java SE 6-7 | 3.8.x | > **最佳实践**:完整解决方案是使用 **Eclipse Classic 3.2.2 + JDK 1.4.2** 组合([官方下载](https://www.eclipse.org/downloads/packages/release/calisto/sr2)),避免混合插件 [^2][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值