SimpleDateFormat两位年份转换为四位年份问题解决
时间: 2023-07-25 14:20:18 浏览: 152
要将SimpleDateFormat的两位年份转换为四位年份,可以使用Calendar类来实现。具体做法如下:
1. 先将字符串类型的日期转换为Date类型。
2. 创建Calendar对象,并将Date类型的日期设置为Calendar对象的时间。
3. 使用Calendar对象的get方法获取年份,如果年份小于100,则加上1900,即可得到四位年份。
下面是示例代码:
```
String dateStr = "21-01-01"; // 日期字符串,年份为两位数
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd"); // 定义日期格式
Date date = sdf.parse(dateStr); // 将字符串转换为Date类型
Calendar calendar = Calendar.getInstance(); // 创建Calendar对象
calendar.setTime(date); // 将Date类型的日期设置为Calendar对象的时间
int year = calendar.get(Calendar.YEAR); // 获取年份
if (year < 100) {
year += 1900; // 如果年份小于100,则加上1900,即可得到四位年份
}
System.out.println(year); // 输出四位年份
```
输出结果为:2021。
相关问题
SimpleDateFormat日期转换多了一年
SimpleDateFormat是Java中用于日期格式化和解析的类。在使用SimpleDateFormat进行日期转换时,有一个常见的问题是混淆了小写的"yyyy"和大写的"YYYY"。这两个符号在日期格式中有不同的含义。
- "yyyy"表示年份,使用四位数表示,例如2021年。
- "YYYY"表示周年,即根据周的第一天来确定年份。如果日期跨越了两个年份的第一周,那么"YYYY"会返回下一年的年份。
在你提供的代码中,使用了"yyyy-MM-dd H:m:s"的格式进行日期解析。这意味着解析的年份是按照四位数表示的。所以,无论输入的日期是哪一年,解析后的结果都会是相同的年份。
如果你想要根据周的第一天来确定年份,可以使用"YYYY"来表示年份。这样,当日期跨越两个年份的第一周时,解析后的结果会返回下一年的年份。
以下是一个示例代码,演示了使用"YYYY"进行日期解析的情况:
```java
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd H:m:s");
String string = "2018-3-19 14:47:10";try {
Date parse = simpleDateFormat.parse(string);
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
```
在这个示例中,输入的日期是2018年3月19日,但由于这一天是2018年的第12周,解析后的结果会返回2019年的日期。
simpledateformat 用法
SimpleDateFormat 是 Java 中用于格式化日期的类,它可以将日期对象转换成指定格式的字符串,也可以将字符串转换成对应的日期对象。下面是 SimpleDateFormat 的用法:
1. 构造 SimpleDateFormat 对象
在构造 SimpleDateFormat 对象时,需要传入一个格式化字符串,用于指定日期的输出格式。例如:
```java
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
```
这里的格式化字符串 "yyyy-MM-dd HH:mm:ss" 表示年份、月份、日期、小时、分钟、秒钟分别对应的占位符,其中:
- yyyy:四位年份
- MM:两位月份
- dd:两位日期
- HH:24 小时制的小时
- mm:分钟
- ss:秒钟
2. 格式化日期
将日期对象转换成指定格式的字符串,可以使用 SimpleDateFormat 的 format 方法。例如:
```java
Date date = new Date();
String dateString = sdf.format(date);
System.out.println(dateString);
```
这里的 date 对象表示当前时间,format 方法将其转换成字符串,输出的结果类似于 "2021-05-31 14:30:00"。
3. 解析字符串
将字符串转换成对应的日期对象,可以使用 SimpleDateFormat 的 parse 方法。例如:
```java
String dateString = "2021-05-31 14:30:00";
Date date = sdf.parse(dateString);
System.out.println(date);
```
这里的 dateString 是一个字符串,表示日期时间,parse 方法将其转换成 Date 对象,输出的结果类似于 "Mon May 31 14:30:00 CST 2021"。
需要注意的是,SimpleDateFormat 在解析字符串时,要求字符串的格式必须与指定的格式化字符串保持一致,否则会抛出 ParseException 异常。
阅读全文