我需要编写高性能函数,根据给定的日期时间和时移计算新的日期时间。它接受 2 个参数:
- 字符串,表示日期,格式为 YYYYMMDDHHmm
- 整数,代表时移(以小时为单位)
函数返回第一个参数格式的字符串,该字符串是对第一个参数应用时移的结果而组成的
提前知道第一个参数在程序生命周期内始终相同。
我的实现有以下步骤:
- 解析第一个参数以提取年、月、日、小时、分钟
- 创建 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/