把格式化日期转换成毫秒值

<span style="white-space:pre">		</span>// 先把字符串转成Date类型
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		// 此处会抛异常
		Date date = null;
		try {
			date = sdf.parse("2015-05-05 22:05");
		} catch (ParseException e) {
			e.printStackTrace();
		}
		// 获取毫秒数
		long longDate = date.getTime();
		System.out.println(longDate);

<think>我们正在处理用户的问题:将Java中的毫秒转换为时间格式的方法。根据用户需求,我们需要提供将毫秒转换为时间格式的几种方法。参考引用中提供了一些信息:引用[1]展示了使用DateFormat将字符串解析为Date对象,然后格式化的方法。但用户的需求是毫秒转换,所以我们可以直接使用毫秒创建Date对象,然后用DateFormat格式化。引用[2]展示了使用Date构造函数,传入毫秒来创建日期对象,然后输出。但直接输出Date对象会调用toString()方法,格式固定。用户需要的是自定义时间格式。引用[3]是关于Arrays类的,与当前问题无关。因此,我们将重点参考引用[1]和引用[2]提供的方法。常见的将毫秒转换为时间格式的方法有以下几种:1.使用java.util.Date类,结合java.text.DateFormat或SimpleDateFormat进行格式化。2.使用java.util.Calendar类设置毫秒,然后获取各个字段并格式化。3.使用Java8及以上的java.time包中的Instant、LocalDateTime等类(推荐)。由于用户没有指定Java版本,我们将提供传统方法和Java8及以上的方法。步骤:1.传统方法:使用Date和SimpleDateFormat2.传统方法:使用Calendar3.现代方法:使用Java8的java.timeAPI注意:用户要求的是将毫秒(long类型,表示自1970年1月1日00:00:00GMT以来的毫秒数)转换为时间格式。下面将分别介绍这三种方法。</think>### Java 毫秒转换为时间格式的方法 在 Java 中将毫秒转换为时间格式主要有以下三种常用方法: --- #### **方法 1:使用 `java.util.Date` 和 `SimpleDateFormat`** ```java import java.text.SimpleDateFormat; import java.util.Date; public class MillisToDate { public static void main(String[] args) { long millis = System.currentTimeMillis(); // 示例毫秒 Date date = new Date(millis); // 创建Date对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(date); System.out.println(formattedDate); // 输出:2023-08-15 14:30:45 } } ``` - **说明**: `Date` 构造函数接收毫秒参数(从 **1970-01-01 00:00:00 GMT** 起算)[^2],`SimpleDateFormat` 定义输出格式(如 `"yyyy-MM-dd"` 或 `"HH:mm:ss"`)。 --- #### **方法 2:使用 `java.util.Calendar`** ```java import java.util.Calendar; import java.text.SimpleDateFormat; public class MillisToCalendar { public static void main(String[] args) { long millis = 1672502400000L; // 2023-01-01 00:00:00 Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(millis); // 设置毫秒 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分"); System.out.println(sdf.format(calendar.getTime())); } } ``` - **说明**: 通过 `setTimeInMillis()` 设置毫秒到 `Calendar` 对象,支持更灵活的日期操作(如加减天数)[^2]。 --- #### **方法 3:Java 8+ 的 `java.time` API(推荐)** ```java import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class MillisToTime { public static void main(String[] args) { long millis = 1672588800000L; // 2023-01-02 00:00:00 // 转换为Instant -> LocalDateTime LocalDateTime dateTime = Instant.ofEpochMilli(millis) .atZone(ZoneId.systemDefault()) // 系统默认时区 .toLocalDateTime(); // 自定义格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"); System.out.println(dateTime.format(formatter)); // 2023/01/02 00:00 } } ``` - **优势**: - 线程安全(`DateTimeFormatter` 不可变) - 更清晰的时区处理(`ZoneId`) - 支持纳秒级精度[^1]。 --- ### **关键注意事项** 1. **时区问题**: 上述方法默认使用系统时区。如需指定时区: ```java // SimpleDateFormat sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // java.time .atZone(ZoneId.of("Asia/Shanghai")) ``` 2. **格式符号**: | 符号 | 含义 | 示例 | |------|----------|------------| | `yyyy` | 年 | 2023 | | `MM` | 月 | 08 | | `dd` | 日 | 15 | | `HH` | 小时(24h)| 14 | | `mm` | 分钟 | 30 | | `ss` | 秒 | 45 | 3. **性能**: Java 8 的 `java.time` API 性能更优,且避免传统 `Date/Calendar` 的线程安全问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值