Java,更改日期格式。
我想将日期格式从yyyyMM更改为yyyy MM 我发现以下两种方法同样有效。但是哪一个是最好的呢?我更喜欢Method2,因为它更简单,但是使用Method1有什么好处吗Java,更改日期格式。,java,Java,我想将日期格式从yyyyMM更改为yyyy MM 我发现以下两种方法同样有效。但是哪一个是最好的呢?我更喜欢Method2,因为它更简单,但是使用Method1有什么好处吗 public String date; public void methodOne() { String newDate = date; DateFormat formatter = new SimpleDateFormat("yyyyMM"); DateFormat wantedFormat
public String date;
public void methodOne()
{
String newDate = date;
DateFormat formatter = new SimpleDateFormat("yyyyMM");
DateFormat wantedFormat = new SimpleDateFormat("yyyy-MM");
Date d = formatter.parse(newDate);
newDate = wantedFormat.format(d);
date = newDate;
}
public void methodTwo()
{
date = date.substring(0, 4) + "-" + date.substring(4, 6);
}
您应该更喜欢方法一,因为它可以检测输入日期的格式是否无效。方法二可能会导致问题,因为无法保证输入日期始终采用相同的格式。当您以后想要更改输入或输出格式时,方法一也更容易调整
如果性能真的很重要,那么使用方法二是有意义的,因为它应该比方法一快一点。我认为方法一更通用。如果需要再次更改所需的格式,则只需为所需的任何新格式更改参数“yyyy-MM”,无论它有多奇特。我发现当你与世界各地的人一起工作时,methodOne比使用子字符串更有用,也更容易阅读。使用子字符串意味着您无法确保接下来的内容具有您期望的格式。您可能按错误的顺序进行拆分。以一种简单的方式进行拆分:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String date = sdf.format(yourDate);
使用SimpleDataFormat是行业标准。将来更容易阅读和维护,因为它允许轻松更改格式。
java.time.YearMonth
还有第三种方法:使用Java 8和更高版本中内置的类作为Java.time框架的一部分
您没有日期和时间,因此使用诸如java.util.date之类的日期时间类,甚至java.time类型(Instant、OffsetDateTime、ZonedDateTime)都不是一个好的选择。由于您只有一年和一个月的使用时间,因此,YearMonth
——非常适合
与其在代码周围传递字符串,不如传递这些YearMonth
值。然后得到类型安全性和有效值
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuuyy");
YearMonth ym = YearMonth.parse( input );
YearMonth::toString
方法使用的默认格式使用所需的标准ISO 8601格式
String output = ym.toString();
如果没有其他时间/内存限制的话,第一个更具可读性,我更喜欢它。不过,这个问题是基于意见的。谢谢你,这就是我想要的答案。我接受了你的回答,因为你是第一个回答的。