【发布时间】:2019-11-14 15:45:26
【问题描述】:
我在我的应用程序中收到一个日期时间作为字符串。在那里我需要提取小时,以便可以将它与其他一些东西一起写入文件。对于我的单元测试,字符串看起来像这样
2019-10-26T00:00:00+01:00
我用来提取小时的代码是这样的
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public static int extractHour(String dateInString) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ");
DateTime dateTime = formatter.parseDateTime(dateInString);
return dateTime.getHourOfDay();
}
我的测试在本地通过了预期的 00 小时和实际的 00 小时,但是当我通过 Jenkins 部署时,实际小时显示为 23,而我的预期是 00。
【问题讨论】:
-
时区或偏移问题...您的本地系统的语言环境是什么?您的部署目标是什么?
-
你必须在你的格式化程序中指定本地,我也建议使用
java.time而不是joda -
@YCF_L 在格式化程序中指定时区对我有用,如果你愿意,可以将其作为答案,我会接受
-
很高兴听到这个消息,这是我身边的一个镜头:),我会让你发布答案,我会紫外线 :)
标签: java datetime parsing jenkins time