java - 高性能日期运算函数

标签 java datetime

我需要编写高性能函数,根据给定的日期时间和时移计算新的日期时间。它接受 2 个参数:

  1. 字符串,表示日期,格式为 YYYYMMDDHHmm
  2. 整数,代表时移(以小时为单位)

函数返回第一个参数格式的字符串,该字符串是对第一个参数应用时移的结果而组成的

提前知道第一个参数在程序生命周期内始终相同。

我的实现有以下步骤:

  • 解析第一个参数以提取年、月、日、小时、分钟
  • 创建 GregorianCalendar(年、月、日、小时、分钟)对象
  • 应用方法 GregorianCalendar.add(HOUR,timeshift)
  • 应用 SimpleDateFormat 将结果转换回字符串

问题是我没有利用第一个参数始终相同的事实。 如果我将创建一个类成员 GregorianCalendar(year,month,date,hours,min),那么在第一次调用我的函数之后,该对象将被修改,这不好,因为我无法在后续调用中重用它。

最佳答案

如果可以的话,请使用 Joda-Time库,它使日期运算变得非常简单:

  DateTime dt = new DateTime();
  DateTime twoHoursLater = dt.plusHours(2);

它们有一个 DateTimeFormatter 类,您可以使用该类将输入日期时间字符串解析为 DateTime,例如:

  DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMddHHmm");
  DateTime dt = fmt.parseDateTime(myDateString);
  DateTime result = dt.plusHours(myTimeshiftInHours);

Joda-Time 与 java.util.Date 也能很好地互操作。我喜欢它!

关于java - 高性能日期运算函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981651/

相关文章:

通过 Internet 保存 Java 属性

java - 为什么移位运算符>>中的负数结果与正常除法不同?

javascript - 全局调整日期时间

ruby-on-rails - time_ago_in_words 和本地化

java - 如何以编程方式将映射资源添加到 hibernate 配置以创建 session 工厂?

java - JSP:如何通过按下按钮来更新表

java - Math.ceil() 和类似结果的精度

python - 如何在 python 中减去日期时间/时间戳

php - 将日期时间舍入到最后一小时

R - 将日期值转换为正整数