- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须以这种格式输入日期时间:
"2018-07-17T12:16:50.52Z"
因此我使用:
private static final SimpleDateFormat LIVETRACK_DATE_TIME_FORMATTER =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
DATE_TIME_FORMATTER.parse(timeFrameFrom);
但是当我运行测试用例时出现以下错误:
Tue Jul 17 1[2:20:50 CES]T 2018> but was:<Tue Jul 17 1[0:20:50 GM]T 2018>
这是否意味着我应该将日期转换为 GMT 格式?我该如何转换它?
最佳答案
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"EEE MMM dd HH:mm:ss zzz yyyy 'Uhr'", Locale.ROOT);
String input = "2018-07-17T12:16:50.52Z";
ZonedDateTime dateTime = Instant.parse(input)
.atZone(ZoneId.of("Europe/Berlin"));
String output = dateTime.format(formatter);
System.out.println(output);
输出:
Tue Jul 17 14:16:50 CEST 2018 Uhr
您的测试用例预计会出现错误的结果。输入字符串中的 Z
表示 UTC(与 UTC 或所谓的祖鲁时区的偏移量为零)。 UTC 时间 12:16:50.52 与中欧夏令时间 (CEST) 14:16:50.52 相同。因此,要求 Tue Jul 17 12:20:50 CEST 2018 Uhr
是错误的。
在您的代码中,您将 Z
硬编码为文字,而不是像您应该的那样将其解析为偏移量。有趣的是,这产生了单元测试预期的错误时间点,只是不在预期的时区。这可能与使用 JVM 的时区设置的 Date.toString
有关,并且测试期望这是 CEST,而实际上是 GMT。但是,您的 SimpleDateFormat
没有使用 GMT 来解析字符串(可能是 CEST),因此您没有向我们提供足够的信息来解释测试中发生的所有情况。 SimpleDateFormat
将使用相同的 JVM 设置,除非您显式设置了时区,而您发布的代码中不会发生这种情况。
链接: Oracle tutorial: Date Time解释如何使用java.time
。
关于java - 时区 CEST 至 GMT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378936/
无法将此日期格式与 joda 时间转换为本地时间 我已经在使用最新的 joda 版本 2.10.1,并且通过更改格式或添加区域设置尝试了许多解决方案,但都不起作用。 val dateTimeForma
我的印象是代码接收文档已经过时了。 我有 Cept 文件与用户步骤定义文件一起使用,我将其用于登录调用等操作。 由于复杂性,我很想改用 Cest 类,但我无法让它们识别我的用户步骤。这是一个例子: l
我的印象是解码文档已经过时了。 我有 Cept 文件与用户步骤定义文件一起使用,我将其用于登录调用等。 由于复杂性,我很想改用 Cest 类,但我无法让它们识别我的用户步骤。这是一个例子: login
当使用/usr/bin/php 在命令行中调用 php 时,它担心我的时区设置。我检查了 phpinfo() 并查找了 php.ini。我想使用 CEST 作为时区并写道; date.timezone
这个问题在这里已经有了答案: Why does Date.parse give incorrect results? (11 个答案) 关闭 3 年前。 我想知道为什么下一行有效: new Date
我不确定 Cest 文件是否可以扩展。在documentation说你可以扩展你的 Cest 类来分享共同的行为。但是每次我尝试运行我的测试时,我都会遇到类未找到异常。 是文档有误还是我做错了什么?
我在 Linux 上的 Lampp 环境中使用休眠(Hibernate Maven 5.2.15.Final,Mysql-connector Maven 8.0.9-rc)和 mysql 5.7。 我
我在服务器上得到了一个 JSON,我尝试解析它。问题是有些日期看起来像: Tue, 03 Sep 2013 12:18:45 CEST 有些是: Sat, 17 Nov 2012 15:39:43 C
我有一个脚本,在其中创建两个 Date 实例,第一个返回 CET 偏移时间戳中的日期,第二个返回 CEST 中的日期。我不明白为什么。 var start_date = new Date(2014,
我必须以这种格式输入日期时间: "2018-07-17T12:16:50.52Z" 因此我使用: private static final SimpleDateFormat LIVETRACK_DAT
我在时区和本杰明·富兰克林方面遇到了一些大麻烦。 我有一个包含 UTC 时间戳字段的表,没有存储时区。 我的目标是按星期几或按 n 小时之类的切片对该表的行进行分组。 我是如何进行到现在的: -- C
我需要将一些表从 MySQL 数据库移动到 PostgreSQL。所以我通过检查系统变量检查了MySQL服务器使用哪个时区: system time zone CET CET - 据我所知 -
我可以使用“date -u”获得 UTC 当前时间。但我想同时打印一些常见时区的当前时间。 (UTC、EDT、CEST...) 我可以创建一个脚本并添加几个: date -u -d 'x hour a
我想在特定 Cest 中的所有测试之前运行一些东西,然后在所有测试运行之后清理它,类似于 PHPUnit 中的 setUpBeforeClass 和 tearDownAfterClass 方法。 有没
我只想跳过代码接收测试中的一个测试。 使用 Cept 测试,您可以执行 $scenario->skip(); 但不适用于 Cest 测试。 所以我想做这样的事情。运行第一个测试,但跳过第二个。 Cla
奇怪的事情。我有 SQLite Android 数据库,其中日期保存为长值。我将它们读为日期对象,例如: new Date (cursor.getLong(4)) 接下来,在显示时,我使用 toStr
我想使用 joda 库解析 DateTime(在 scala 中,但应该与 java 相同)。 来源看起来像 val dateParser = DateTimeFormat.forPattern("y
我刚刚发现我的应用程序中的日期字段存在问题。我有一个以 UTC 格式在 Solr 中索引的日期字段。例如,"parution_date": "2014-09-29T22:00:00Z",。当我使用数据
我想在我的测试中使用 cest 名称,但无法检索它。根据codeception documentation , 可以检索函数名称。这对我有用: public function tryToTest(U
您好,我已阅读文档,我只是想确定我得到的日期是否能够正确处理该时间之后的“GMT+0200 (CEST)”。这是我的代码和输出: var date= moment("Mon Mar 27 2017 1
我是一名优秀的程序员,十分优秀!