11Date,SimpleDateFormat和Calendar

本文介绍了Java中日期操作的基本方法,包括使用Date类获取当前日期并转换为毫秒,利用SimpleDateFormat进行日期格式化及字符串与日期间的相互转换,以及通过Calendar类实现更高级的日期时间操作。

Date类:

gettime():将日期转换为毫秒,从1970 年 1 月 1 日 00:00:00开始

SimpleDateFormat:

可以格式化日期

Calendar:

一些好用的方法


栗子:

	public static void main(String[] args) {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyy年MM月dd日 HH:mm:ss");
		
		try {
			//将时间格式化
			sdf.format(date);
			//获取毫秒数
			date.getTime();
			//将字符串解析成Date,这个字符串要符合sdf的格式
			String str = "2036年8月6日 18:36:42";
			date = sdf.parse(str);	//这句有非运行时异常需要捕获
			//格式化输出这个date
			sdf.format(date);
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}


### Java 中 `SimpleDateFormat` `Calendar` 类的用法及区别 #### 使用 `SimpleDateFormat` `SimpleDateFormat` 是用于解析格式化日期的一个工具类。通过定义模式字符串来指定日期时间的表示方式。 ```java import java.text.SimpleDateFormat; import java.util.Date; // 创建 SimpleDateFormat 对象并设置日期格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currentDate = new Date(); String formattedDate = sdf.format(currentDate); System.out.println(formattedDate); // 输出当前日期, 如 "2023-10-05 14:30:00"[^1] ``` 需要注意的是,`SimpleDateFormat` 不是线程安全的,在多线程环境中应谨慎使用或考虑其他替代方案如 `DateTimeFormatter`(自 Java 8 起推荐使用的 API)。 #### 使用 `Calendar` 类 相比之下,`Calendar` 提供了一种更灵活的方式来操作日期时间字段: ```java import java.util.Calendar; // 获取默认日历实例 Calendar calendar = Calendar.getInstance(); calendar.set(2023, Calendar.OCTOBER, 5); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; // 注意月份是从零开始计数的 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); System.out.printf("%d-%02d-%02d\n", year, month, dayOfMonth); // 打印 “2023-10-05” ``` 此外,还可以利用其方法来进行复杂的计算,比如增加/减少天数、获取特定星期几等。 #### 主要差异总结 - **功能定位不同**:`SimpleDateFormat` 更侧重于日期时间字符串之间的转换;而 `Calendar` 则主要用于执行各种基于日历逻辑的操作。 - **易用性灵活性对比**:对于简单的格式化需求来说,`SimpleDateFormat` 显得更加直观简单;但对于涉及更多细节调整的任务,则 `Calendar` 的优势更为明显。 - **性能方面考量**:由于每次调用都需要创建新的对象实例,因此频繁使用时可能会带来一定的开销。不过这种影响通常是可以忽略不计的除非是在极端情况下。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值