当前位置: 首页 > 知识库问答 >
问题:

如何使用简单日期格式解析仅包含月份和年份的日期

孟绪
2023-03-14

我正在处理卡的到期日期。我有一个API,我将在其中获得“yyMM”格式的到期日期为“String”。在这里,我正在尝试使用

带有TimeZone.getTimeZone("UTC ")的SimpleDateFormat

所以我的代码就像

String a= "2011";
SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(a);
System.out.println(date);

现在的问题是,当我通过 2011 年时,它给出的是 2020 年 10 月 31 日星期六 17:00:00 PDT

这里你可以看到我把11作为月份,但是它把它转换成10月而不是11月。

为什么?

还有哪些其他选项可以将带有 yyMM 的字符串转换为带时区的日期?

共有2个答案

狄信然
2023-03-14

您解析得很好,但它是以PDT(您的本地时区)打印的。

Sat Oct 31 17:00:00 PDT 2020

嗯,日期不跟踪时区。< code>Calendar类可以,它在格式化程序内部。但是,默认打印行为仍然是当前时区。

如果您从逻辑上将此输出转换回UTC,那么由于PDT是UTC-7,因此将是11月1日。

基本上,使用java.time类。在这里查看更多信息如何在Java中获取UTC或GMT的当前日期和时间?

从焱
2023-03-14

您应该使用Java8YearMonth类。

String a = "2011";
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("yyMM");
YearMonth yearMonth = YearMonth.parse(a, inputFormat);

DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MMMM yyyy");
System.out.println(yearMonth.format(outputFormat));

输出

2020年11月

 类似资料:
  • 我想有一个日期选择器,用户可以从日期选择器中只选择月份和年份,我还需要限制从以前的日期选择器中选择月份和年份的下一个日期选择器... 有人能帮我解脱吗?

  • 问题内容: 我在确定仅基于月份和年份的SQL中比较日期的最佳方法时遇到了麻烦。 我们会根据日期进行计算,由于结算是按月进行的,所以该月的日期造成了更大的障碍。 例如 上面的示例将不返回任何行,因为@ date1大于@ date2。因此,我想找到一种摆脱困境的方法。 同样,以下情况由于相同的原因也让我感到悲伤。 我已经完成日期的内联转换,以得出指定日期的月份的第一天和最后一天。 必须有一种更简单的方

  • 我使用的是bootstrap datepicker,我的代码如下所示,是JSFIDLE上的代码演示 上面的代码运行良好,但我试图做的是允许用户只选择月份和年份。 你能告诉我怎么做吗?

  • 问题内容: 我正在尝试将包含2007年12月1日等各个部分的日期转换为SQL Server 2005中的日期时间。我尝试了以下方法: 但这会导致日期错误。将三个日期值转换为正确的日期时间格式的正确方法是什么? 问题答案: 假设全部,如何:

  • 我很难确定在SQL中只根据月份和年份来比较日期的最佳方式。 我们根据日期进行计算,并且由于按月计费,因此该月的日期造成了更多的障碍。 比如说 上述示例不会返回任何行,因为@date1大于@date2。所以我想找个方法把这一天从等式中去掉。 同样,下面的情况也同样让我感到悲伤。 我已经完成了日期的内联转换,以导出指定日期的第一天和最后一天。 一定有更简单的方法。有什么建议吗?