- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试将本地时间 (EST) 转换为 UTC,反之亦然。因此,我提供了一个时间选择器,用户选择时间,我将其转换为 UTC 并发送到服务器。代码如下:
val cal = Calendar.getInstance()
cal.set(Calendar.HOUR_OF_DAY, mHour) //mHour = 15
cal.set(Calendar.MINUTE, mMinute) //mMinute = 00
cal.set(Calendar.SECOND, 0)
val formatter = SimpleDateFormat("HH:mm:ss")
formatter.timeZone = TimeZone.getTimeZone("UTC")
val cutOffTime = formatter.format(cal.time) //this gives 19:00:00 which is correct
考虑夏令时后,上述 cutOffTime 输出是正确的,因为 15:00 EST 是 19:00 UTC。
现在,我从服务器获取相同的 cutOffTime,将其转换为本地(EST)并显示。代码如下:
val cutOffTime = jsonObject.get("cutOffTime").getAsString()) //value is 19:00:00
var cutoffTime: Time? = null
val format = SimpleDateFormat("hh:mm:ss")
format.timeZone = TimeZone.getTimeZone("UTC")
cutoffTime = Time(format.parse(cutOffTime).time)
//cutoffTime has value 14:00 which is strange, it should be 15:00
所以,上面代码中的 cutoffTime 值为 14:00,这很奇怪,它应该是 15:00。请注意,此代码在 2020 年 3 月 8 日夏令时之前有效。知道我做错了什么吗?
最佳答案
请不要使用旧的且设计不当的 java api 来获取日期和时间。使用新的java.time API。它更加强大并且更好用。
这里是一个关于如何使用 java.time 执行代码的示例:
int mHour = 15;
int mMinute = 0;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
ZonedDateTime toFormat = LocalDateTime
.now() // Current date and time.
.withHour(mHour).withMinute(mMinute).withSecond(0) // Change hour, minute and second like in your example.
.truncatedTo(ChronoUnit.SECONDS) // Throw away milliseconds and nanoseconds.
.atZone(ZoneOffset.UTC); // Say that the time is located at UTC+0.
String formatted = formatter
.withZone(ZoneId.of("America/New_York")) // Create a new formatter that formats toFormat to the local time America/New_York.
.format(toFormat);
System.out.println(formatted); // Gives 11:00:00 on my machine now. America/New_York is either UTC-5 or UTC-4.
ZonedDateTime parsed = LocalTime
.parse(formatted, formatter) // Parse the String. The result is an instance of LocalTime.
.atDate(LocalDate.now(ZoneId.of("America/New_York"))) // Add the date values which are those of the current local date at America/New_York.
.atZone(ZoneId.of("America/New_York")); // Create a ZonedDateTime of the LocalDateTime to explicitly define the zone.
Instant pointInTimeA = parsed.toInstant();
Instant pointInTimeB = toFormat.toInstant();
System.out.println(pointInTimeA.equals(pointInTimeB)); // Gives true because both describe the same point in time as they should.
最大的好处是 API 将为您处理有关夏季和冬季的所有事情。已阅读here有关 EST
以及为什么不应使用它的信息。
您面临的问题可能是由于您在一个格式化程序中使用了 HH
而在另一个格式化程序中使用了 hh
。它们不相同。已阅读here关于格式化和解析模式。
关于java - 在 Android 上将 UTC 转换为 EST 不适用于夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60624031/
我遇到了一种情况,我尝试提醒不在东部时区的用户尝试在东部标准时间上午 12 点到凌晨 3 点之间提交帖子。 伪代码: var systemTimeZone = get current EST time
我无法弄清楚为什么下面代码的时区一直显示 UTC 而不是 EST。在我的本地计算机上它显示 EST,即使我在 MST 时间但在实际服务器上它一直显示 UTC。有什么线索吗? Mon Nov 9 201
所以我有这段代码可以返回当前的 EST Date easternTime = new Date(); DateFormat format = new SimpleDateFormat("h:mm a"
当我写这段代码时: Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone("EST"));
我尝试通过 EST 协议(protocol)从 EST 测试服务 URL“https://testrfc7030.com/”请求新证书。该程序为此使用了 Bouncy CaSTLe。 我已经配置了 E
我创建了一个用户窗体,其中包含一个文本框,该文本框将显示美国东部时间的当前时间。唯一的问题是,反射(reflect)的时间当然是我们国家的当前时间,所以我想将其转换为 EST,即距我们时间 - 12:
我有一个字符串列表,指示各个时区的时间(例如,“Fri, 26 Oct 2012 03:08:01 +/-00XX”)。例如,如何将它们全部转换为 EST(或实际上任何单个时区)?谢谢 最佳答案 pa
EST 夏令时时间转换错误 private void timeConversion() { String s = "2016-08-29 1:40:00 AM"; DateFormat
我需要添加仅更改北美时区的功能。共有六个时区,包括夏威夷和阿拉斯加。 我在美国东部,所以我的时区是东部。在为我所在的位置选择时区时,我可以选择纽约、芝加哥和其他几个时区。我不确定为什么有这么多不同的时
我有一个逻辑应用程序,每天每半小时运行一次。典型的一天从凌晨 3 点到凌晨 2:59 开始。因此,在条件下,我必须检查当前时间(EST 时间)是否在上午 12 点到凌晨 2:59 之间,并根据表达式求
长话短说 是否有 PHP5 识别的官方的、未弃用的时区为东部标准时间,而不是东部夏令时间? 短篇故事长:-P 哇,我不敢相信 PHP 竟然能通过设置时间来实现这样的集群。 我想使用 PHP5 的 da
在我的基于 struts 的 Web 应用程序中,我正在获取有关调度程序下一次运行的数据。然后我将其传递给一个将设置发票日期的方法。实际情况是,我们需要管理整个月的交易。当月结束后,相应的发票将在下个
我已经使用 SELECT @@system_time_zone; 检查了我的 mysql 系统时区,并在生产服务器中返回了 EDT。现在我想生成相同时区的(即 EDT)当前时间戳,这是行不通的。这是我
我知道这可能是一个菜鸟问题,我的网站托管在 CST 的一台计算机上,我需要在美国东部标准时间星期一凌晨 12:00:00 显示一些内容。 var d = new Date(); if (d.get
假设我得到一个像“7:00”这样的输入字符串。我知道时间是 EST,但我想将其转换为本地时间(因此对于 PST 的人来说,它显示为 4:00)。我尝试了以下代码,但我不断从中获取 24 小时时间和完整
这是我当前使用的代码。 date_default_timezone_set('America/New_York'); echo ''; echo date('h:i T M-j-y', strtoti
我有游戏表,我想从中获取在 11:00:00 到 14:00:00 之间开始的游戏。但我存储在数据库中的 start_in_time 是 UTC。我想获取游戏开始时间 11:00:00 EST 和 1
我是 C# 新手 我正在使用 YQL 获取 XML 格式的数据。 我在美国东部时间晚上 10:47 收到时间 我想把它转换成我的时区,比方说转换成 CST(中国标准时间)或 MYT(马来西亚标准时间)
请建议一种在 EST 中打印日期的方法。 public Date convertToEST(Date date) { // some code here } 如果我在 IST 中传递一个日期
任务很简单,将一串整型变量写入内存: 原码: for (size_t i=0; i 在 GK110 上与可悲的 5GB/sec(在 CPU 上 51.2GB/sec)到 GPU 全局内存的理论带宽),
我是一名优秀的程序员,十分优秀!