Java 时间戳格式加17小时
问题在于Java 时间戳格式加17小时,java,time,timestamp,Java,Time,Timestamp,问题在于simpleDataFormat似乎在实际时间戳上增加了17个小时 这应该很简单。我不确定我做错了什么。我有一个方法,可以将长纳秒转换为格式化的时间戳。增加了17个小时。这是我的 输出:17:00:00:234 我在山区标准时间你的机器在哪个时区?它可能进行时区转换吗 如果是这样,使用Java TimeZone类可能会有所帮助:您的机器在哪个时区?它可能进行时区转换吗 如果是这样,使用Java TimeZone类可能会有所帮助:您必须将时区设置为UTC public static voi
simpleDataFormat
似乎在实际时间戳上增加了17个小时
这应该很简单。我不确定我做错了什么。我有一个方法,可以将长纳秒转换为格式化的时间戳。增加了17个小时。这是我的
输出:17:00:00:234
我在山区标准时间你的机器在哪个时区?它可能进行时区转换吗
如果是这样,使用Java TimeZone类可能会有所帮助:您的机器在哪个时区?它可能进行时区转换吗
如果是这样,使用Java TimeZone类可能会有所帮助:您必须将时区设置为
UTC
public static void main(String[] args) throws IOException {
long nanoseconds = 234236402;
Timestamp ts = new Timestamp(TimeUnit.MILLISECONDS.convert(nanoseconds, TimeUnit.NANOSECONDS));
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss:SSS");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = format.format(ts);
System.out.println(formatted);
}
默认情况下,
SimpleDataFormat
将时间戳转换为当前时区中的时间。因此,有必要告诉它假定为UTC。否则,您可以使用。您必须将时区设置为UTC
public static void main(String[] args) throws IOException {
long nanoseconds = 234236402;
Timestamp ts = new Timestamp(TimeUnit.MILLISECONDS.convert(nanoseconds, TimeUnit.NANOSECONDS));
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss:SSS");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = format.format(ts);
System.out.println(formatted);
}
默认情况下,
SimpleDataFormat
将时间戳转换为当前时区中的时间。因此,有必要告诉它假定为UTC。否则,您可以使用。在使用SimpleDataFormat进行格式化时,您正在隐式地将持续时间转换为日期。要半安全地格式化该日期,请在GMT时区中进行格式化,而不使用DST。当遇到+24小时的持续时间时,这仍然会有问题
更好的解决方案是编写Duration类和SimpleDurationFormat类。这是一种痛苦,但你只需要这样做一次。也有其他选择,比如吸入JodaTime,它明确支持持续时间(尽管我从未格式化过持续时间)。在使用SimpleDateFormat格式化时,您将持续时间隐式转换为日期。要半安全地格式化该日期,请在GMT时区中进行格式化,而不使用DST。当遇到+24小时的持续时间时,这仍然会有问题
更好的解决方案是编写Duration类和SimpleDurationFormat类。这是一种痛苦,但你只需要这样做一次。也有其他选择,比如吸入JodaTime,它明确支持持续时间(尽管我从未格式化过持续时间)。它是否为您进行时区计算?相对于格林尼治标准时间,你在哪里?我在山区标准时间,而你的SSCCE比大多数人好得多,它真的是没有导入声明的SSCCE吗?并不是每个人都会为短期问题启动IDE。@EdwinBuck说得很好。我会修好的。它在为你做时区计算吗?相对于格林尼治标准时间,你在哪里?我在山区标准时间,而你的SSCCE比大多数人好得多,它真的是没有导入声明的SSCCE吗?并不是每个人都会为短期问题启动IDE。@EdwinBuck说得很好。我会修好的。