yyyy-mm-dd 月变成1 simpledateformat
时间: 2023-10-09 07:11:39 浏览: 67
在使用SimpleDateFormat类进行日期格式化时,如果使用yyyy-MM-dd格式,而月份变为1,可能是由于使用了大写的YYYY而不是小写的yyyy导致的。引用中提到,yyyy代表Gregorian Calendar(公历)的年份,而YYYY代表ISO week numbering system(ISO周计数系统)的年份。当日期为2021-12-26时,使用yyyy-MM-dd格式化结果会显示2022年,而使用YYYY-MM-dd格式化结果会显示2021年。因此,如果不小心使用了YYYY进行格式化,就可能造成程序的Bug。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
相关问题
yyyy-MM-dd-MM-dd解析为yyyy-MM-dd,yyyy-MM-dd方法
在日期处理中,如果你有一个字符串形式的日期,如 "yyyyMMdd" 或 "yyyy-MM-dd", 并想将其转换成另一种格式 "yyyy-MM-dd",你可以使用 Java 的 `SimpleDateFormat` 类来进行解析和格式化。
例如,假设你有一个 "yyyyMMdd" 格式的日期字符串,可以先解析它,然后再格式化成所需的 "yyyy-MM-dd" 格式:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateConverter {
public static String convert(String inputDateStr, String formatIn, String formatOut) throws Exception {
SimpleDateFormat formatterIn = new SimpleDateFormat(formatIn);
SimpleDateFormat formatterOut = new SimpleDateFormat(formatOut);
// 解析输入日期
Date date = formatterIn.parse(inputDateStr);
// 转换并返回新的日期字符串
return formatterOut.format(date);
}
public static void main(String[] args) {
try {
String originalDate = "202305202022"; // 假设这是 "yyyyMMdd" 格式
String targetFormat = "yyyy-MM-dd";
String formattedDate = convert(originalDate, "yyyyMMdd", targetFormat);
System.out.println(formattedDate); // 输出:2023-05-20
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个例子中,我们首先创建了两个 `SimpleDateFormat` 对象,一个用于解析输入的日期格式,另一个用于生成目标格式。然后通过 `parse()` 方法将原始字符串转换为 `Date` 对象,最后再用 `format()` 方法将其转换为目标格式的字符串。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 和SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");区别
在Java中,`SimpleDateFormat` 是用于日期和时间格式化的类,它的构造函数接受一个字符串作为模式,这个模式描述了日期应该如何解析和生成。
当你创建 `SimpleDateFormat` 对象如 `SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");` 或者 `dateFormat = new SimpleDateFormat("YYYY-MM-dd");` 时,第一个例子 `"yyyy-MM-dd"` 中:
- "yyyy" 表示四位数的年份,从100到9999;
- "-" 是一个分隔符;
- "MM" 表示两位数的月份,从01到12;
- "dd" 表示两位数的日子,从01到31。
而第二个例子 `"YYYY-MM-dd"` 中的 "YYYY" 通常表示全大写的四位数年份,尽管它也被广泛接受,但在某些版本的Java中,尤其是较旧的版本,可能会将其识别为错误的模式,因为它并不明确是一个有效的日期格式。实践中,推荐始终使用 "yyyy" 来避免这种潜在的不一致性。
所以,正确的格式应该是 `SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");`。如果你使用了 "YYYY",在一些环境中可能会导致解析或生成日期失败。
阅读全文