用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