用Java解析YYYYMMdd日期的最快方法

在这里很难说出要问什么。这个问题是模棱两可的,模糊的,不完整的,过于宽泛的或修辞性的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开,

请访问帮助中心。

8年前关闭。

解析YYYYMMdd日期(例如2012年4月5日的20120405)时,最快的方法是什么?

int year = Integer.parseInt(dateString.substring(0, 4));

int month = Integer.parseInt(dateString.substring(4, 6));

int day = Integer.parseInt(dateString.substring(6));

int date = Integer.parseInt(dateString)

year = date / 10000;

month = (date % 10000) / 100;

day = date % 100;

月的mod 10000将是因为mod 10000导致MMdd且结果/ 100为MM

在第一个示例中,我们执行3个String运算和3个“ parse to int”,在第二个示例中,我们通过模运算完成了许多事情。

什么更快?有没有更快的方法?

回答:

如下所示,仅当您查看 数百万 次迭代时,日期处理的性能才有意义。相反,您应该选择易于阅读和维护的解决方案。

尽管可以使用SimpleDateFormat,它不是可重入的,因此应避免使用。最好的解决方案是使用出色的Joda时间类:

private static final DateTimeFormatter DATE_FORMATTER = new DateTimeFormatterBuilder()

.appendYear(4,4).appendMonthOfYear(2).appendDayOfMonth(2).toFormatter();

...

Date date = DATE_FORMATTER.parseDateTime(dateOfBirth).toDate();


如果我们在谈论您的数学函数,那么首先要指出的是,我已修复了您的数学代码中的错误。 那就是

手工做的问题。就是说,一次处理字符串的将是最快的。快速测试运行显示:

year = Integer.parseInt(dateString.substring(0, 4));

month = Integer.parseInt(dateString.substring(4, 6));

day = Integer.parseInt(dateString.substring(6));

大约需要800毫秒的时间:

int date = Integer.parseInt(dateString);

year = date / 10000;

month = (date % 10000) / 100;

day = date % 100;

total += year + month + day;

大约需要400毫秒。

您需要考虑到这是经过

次迭代之后的结果。这是过早优化的完美示例。我会选择最易读,最容易维护的工具。这就是为什么乔达时间答案是最好的。

以上是 用Java解析YYYYMMdd日期的最快方法 的全部内容, 来源链接: utcz.com/qa/399975.html

回到顶部