- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的日期时间格式字符串是:yyyy-MM-dd'T'HH:mm:ss.SSSZ
我正在使用 Joda Time 中的 DateTimeFormatter
以上述格式打印我的日期。
现在,将日期视为
2016/04/01 23:00:00
那么它应该打印
2016-04-01T23:00:00.000Z
但是,它打印
2016-04-01T23:00:00.000+0200
请帮助我以与字符串格式中指定的相同格式打印日期。
最佳答案
以下是 Basil Bourque 对 wrong answer 的评论:
No, no, no. All you have done is append text, creating a falsity. Ifyour date-time represents a moment in a time zone that is two hoursahead of UTC such as
Europe/Helsinki
, and you slap aZ
on the endwhich saysZulu
and means UTC, you are now telling a lie, representingvalue that is off by two hours. This is like replacing the dollar signin a price with a Euro currency symbol but failing to change thenumber.
只是为了说明他所提到的内容:
£100 != $100
2016-04-01T23:00:00.000Z
中的 Z
是 timezone designator零时区偏移。它代表 Zulu,指定 Etc/UTC
时区(时区偏移量为 +00:00
小时)。同一时刻将在不同时区以不同的值呈现,例如
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
Instant instant = Instant.parse("2016-04-01T23:00:00.000Z");
ZonedDateTime zdtNewYork = instant.atZone(ZoneId.of("America/New_York"));
ZonedDateTime zdtIndia = instant.atZone(ZoneId.of("Asia/Kolkata"));
ZonedDateTime zdtNepal = instant.atZone(ZoneId.of("Asia/Kathmandu"));
System.out.println(zdtNewYork);
System.out.println(zdtIndia);
System.out.println(zdtNepal);
// Or at a fixed timezone offset of +02:00 hours
OffsetDateTime odtWithTwoHoursOffset = instant.atOffset(ZoneOffset.of("+02:00"));
System.out.println(odtWithTwoHoursOffset);
}
}
输出:
2016-04-01T19:00-04:00[America/New_York]
2016-04-02T04:30+05:30[Asia/Kolkata]
2016-04-02T04:45+05:45[Asia/Kathmandu]
2016-04-02T01:00+02:00
要进一步理解这个概念,请尝试将日期时间从一个时区转换为另一个时区,例如我展示了纽约日期时间到 UTC 的转换。我展示了将时区偏移为 +02:00
小时的日期时间转换为 UTC 的另一种方法。
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
// #######Example of converting a date-time from one timezone to another#####
ZonedDateTime zdtNewYork = ZonedDateTime.parse("2016-04-01T19:00-04:00[America/New_York]");
Instant instant = zdtNewYork.toInstant();
System.out.println(instant);
// Or as ZonedDateTime
ZonedDateTime zdtUtc = zdtNewYork.withZoneSameInstant(ZoneId.of("Etc/UTC"));
System.out.println(zdtUtc);
// Alternatively, this can be obtained from instant
zdtUtc = instant.atZone(ZoneId.of("Etc/UTC"));
System.out.println(zdtUtc);
// ###########################################################################
System.out.println();
// #####Example of converting a date-time at a fixed timezone offset to UTC###
OffsetDateTime odtNewYork = OffsetDateTime.parse("2016-04-02T01:00+02:00");
instant = odtNewYork.toInstant();
System.out.println(instant);
// Alternatively
OffsetDateTime odtUtc = odtNewYork.withOffsetSameInstant(ZoneOffset.UTC);
System.out.println(odtUtc);
// Alternatively,
odtUtc = instant.atOffset(ZoneOffset.UTC);
System.out.println(odtUtc);
// ###########################################################################
}
}
输出:
2016-04-01T23:00:00Z
2016-04-01T23:00Z[Etc/UTC]
2016-04-01T23:00Z[Etc/UTC]
2016-04-01T23:00:00Z
2016-04-01T23:00Z
2016-04-01T23:00Z
关于java - DateFormatter 未按给定格式打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765401/
我的日期时间格式字符串是:yyyy-MM-dd'T'HH:mm:ss.SSSZ 我正在使用 Joda Time 中的 DateTimeFormatter 以上述格式打印我的日期。 现在,将日期视为 2
这个问题已经有答案了: Getting date from [NSDate date] off by a few hours (3 个回答) 已关闭 5 年前。 我对 Date 进行了扩展,返回格式化
先决条件 在手机设置中设置时区 GMT+13(法莱、托克劳)。 实现 extension Date { func formatForDto() -> String { let
我经常在代码中使用 DateFormatter 并且没有发现任何问题,但后来我决定测试一个类进行大量迭代 - 我注意到一个巨大的内存泄漏。 泄漏的原因是 DateFormatter。 简单代码: va
这个问题已经有答案了: want current date and time in "dd/MM/yyyy HH:mm:ss.SS" format (11 个回答) Change the format
我正在尝试将不带时区值(例如“31.05.2015”)的字符串转换为 NSDate。 我的 DateFormatter 有什么问题?它返回日期 2015-05-31 22:00:00 +0000当我尝
这个问题已经有答案了: NSDateFormatter show wrong year (1 个回答) 已关闭 3 年前。 我尝试格式化我的 UTC 日期,但结果似乎非常错误 日期格式化程序:
这个问题在这里已经有了答案: NSDate Format outputting wrong date (5 个答案) Getting date from [NSDate date] off by
我一直在使用以下代码来格式化日期值: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setLoca
这个问题在这里已经有了答案: Getting date from [NSDate date] off by a few hours (3 个答案) 关闭 5 年前。 我对返回格式化字符串的 Date
我从字符串中得出的日期总是 nil,我不知道为什么。 func getBirthdate() -> Date? { let formatter = DateFormatter()
我是 iOS 的新手,我想在我的约会中增加几毫秒,比如 (5)。我使用了下面的代码,但我没有得到我正在使用的确切日期 let str_TimeStamp = "2017-08-09 10:26:30.
我的 DateFormatter 有问题。 我的 iOS 应用程序与服务器通信并使用 If-Modified-Since header 和使用以下格式化程序创建的日期: modifiedSinceDa
首先要提前致谢。我已经使用 iOS/Swift 多年,这是我第一次看到这种奇怪的行为。这是代码: let dateFormatter = DateFormatter() dateFormatter.d
这个问题在这里已经有了答案: NSDateFormatter show wrong year (1 个回答) 关闭 6 年前。 我有以下代码: var components = DateCompon
在我的 Java 应用程序中,我使用 DateFormat 实例来解析日期输入。 DateFormat fmt; fmt = DateFormat.getDateInstance(DateFormat
代码: let isoDate = "1981-02-20T10:44:00+0800" let dateFormatter = DateFormatter() dateFormatter.timeZ
有谁知道 Java 中的 DateFormatter 不是那么挑剔?我的意思是我可以为它提供多种格式的日期,如果我提供它这样的格式: yyyy-MM-dd HH:mm:ss Z 用户可以输入: 201
我已经阅读了多篇关于此的文章,其中大部分是由于未设置特定时区而系统获取了当前时区。我的场景略有不同并给出了意想不到的结果,所以我会尝试详细解释。 我正在处理一个返回日期的后端,该日期分为日期和时间,存
我试图以我设备的语言显示格式化日期,但它一直以英语显示(即使设备设置为葡萄牙语)。 在我的 ViewController 中我创建了一个日期: let todaysDate: Date = Date(
我是一名优秀的程序员,十分优秀!