- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这段代码:
Calendar cal = Calendar.getInstance();
cal.setTime(pDatum);
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(pHHMMTP.substring(0, 2)));
cal.set(Calendar.MINUTE, Integer.valueOf(pHHMMTP.substring(2, 4)));
cal.set(Calendar.MILLISECOND, 0);
System.out.println(cal.getTime());
其中 pDatum
是 Sun Mar 27 00:00:00 CET 2016
,pHHMMTP
是 02485
和 pHHMMTP.substring(0, 2)
是 02
。
输出是:
Sun Mar 27 03:48:00 CEST 2016
我希望:
Sun Mar 27 02:48:00 CEST 2016
起初我认为这是一个 TimeZone
问题,但使用这段代码我得到了相同的输出:
Calendar cal = Calendar.getInstance();
TimeZone tz = TimeZone.getTimeZone("GMT");
cal.setTimeZone(tz);
cal.setTime(pDatum);
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(pHHMMTP.substring(0, 2)));
cal.set(Calendar.MINUTE, Integer.valueOf(pHHMMTP.substring(2, 4)));
cal.set(Calendar.MILLISECOND, 0);
你看到我的问题了吗?
最佳答案
CET 表示中欧时区。在欧洲,有一个概念Daylight Saving Time .
基本上,在冬天,小时从 1 小时偏移。出于实际原因(实际上是 sleep 质量),时间切换在 Spring 的第一个星期日,即 2016 年 3 月 27 日进行。此外,出于实际原因,时间切换在夜间 02:00 AM 之间完成和 03:00 AM,所以时钟像这样倒计时:01:58
、01:59
、03:00
、 03:01
。这意味着,Sun Mar 27 02:48:00 CET 2016
不存在。
因此,如果您在 3 月 27 日星期日
运行您的代码,您将得到 03:48
但如果您在 3 月 28 日星期一
运行它,你会得到 02:48
。
尝试两个日期:
//Date date = new SimpleDateFormat("dd/MM/yyyy z").parse("27/03/2016 CET");
Date date = new SimpleDateFormat("dd/MM/yyyy z").parse("28/03/2016 CET");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 2);
cal.set(Calendar.MINUTE, 48);
cal.set(Calendar.MILLISECOND, 0);
System.out.println(cal.getTime());
输出:
Mon Mar 28 02:48:00 CEST 2016
关于java - Calendar.HOUR_OF_DAY 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36155927/
我在 Windows 和 Solaris 机器上运行相同的 Java 代码。有部分代码会产生不同的结果: Calendar cd = Calendar.getInstance(); int hour
一个简单的问题,但我找不到它: HOUR_OF_DAY 的范围是 0 到 23,还是 1 到 24? 我想要一个随机的 HOUR_OF_DAY,我需要吗: int randomHour
在 Debug模式下,我看到我正在解析的值等于“2015-09-01 22:00”。当我创建日历时,我发现 HOUR_OF_DAY 等于 22。但是,interval 等于 10,而不是 22。错误在
问题:您认为这是 java.util.Calendar 中的错误吗? 本地 (PDT) 时区的日历对象被实例化并分配零(纪元开始)日期。在将日历的毫秒、秒和分钟设置为零后,该值将按照预期保持不变。然而
我写了一段代码从日历对象中获取小时的值,但它返回了错误的结果。 mpleDateFormat sf = new SimpleDateFormat("hh:mm"); try {
我有这段代码: Calendar cal = Calendar.getInstance(); cal.setTime(pDatum); cal.set(Calendar.HOUR_OF_DAY, In
这个问题已经有答案了: How to set time zone of a java.util.Date? (12 个回答) 已关闭5 年前。 JVM 版本为 1.7。时区为 GMT+3,偏移 180
我试图在 jsinner 控件中以这种格式 hh:mm 显示时间 但我得到的是 12 小时而不是 24 小时 这是我的代码 我哪里错了 Date date = new Date(); SpinnerD
下面的java代码: Calendar calend = Calendar.getInstance(TimeZone .getTimeZone("Pacific/Fak
将数据从文本文件导入到 CSV 文件输出时出现以下错误。我检查了日期,没有发现日期有任何错误。谁能解释一下什么是 HOUR_OF_DAY 错误。 工作;- tFileInputdelimited --
我需要在当前时间上添加两个小时并以 24 小时格式表示。这是我的代码 public class Tester { @Test public void test() { //for ex
我正在尝试将我的时间(以分钟为单位)转换为 HH:MM。例如 418 分钟 = 6:58。我正在使用以下代码: long milli = PriemCas*60000; Calendar cale
我有一个关于 java 时区的棘手问题(至少对我来说)。我将从一个按预期工作的示例开始: TimeZone tz = TimeZone.getDefault(); SimpleDateFormat s
我在 cal.set(Calendar.HOUR_OF_DAY, 0); 方面遇到问题。如果我使用第一个 DST 天,此方法将返回前一天 23:00:00,而不是当天 00:00:00。 我的时区是巴
我是 Java 新手。如何定义 DAY_OF_WEEK HOUR_OF_DAY 类型的enum。我想使用日历对象。我不会创建自己的枚举。我想要相同的: public DAY_OF_WEEK fro
我正在使用以下代码尝试获取 unix 时间戳的 HOUR_OF_DAY (0-23),并将其转换为毫秒。时间戳“1296442971”转换为 Sun Jan 30 2011 22:02:51 GMT-
Calendar.HOUR 和 Calendar.HOUR_OF_DAY 有什么区别?何时使用 Calendar.HOUR 和 Calendar.HOUR_OF_DAY ?有时我很困惑 Calenda
我的代码 Calendar calendar = Calendar.getInstance(); thisHour = calendar.get(Calendar.HOUR_OF_DA
我正在阅读 date4j homepage在谈论 Java 的 Calendar 类的问题时,它指出了以下内容: Calendar has two items referring to the hou
当我解析 2014-10-06 12:00:00 时,我很惊讶为什么日历 HOUR_OF_DAY 在下面的示例中打印 0。 我明白如果 HOUR 打印 0,但 HOUR_OF_DAY 不应该打印 12
我是一名优秀的程序员,十分优秀!