我想把时间转换成格式 "PT10H30M" 格式化 "10:30 AM" 把这个省下来 Date ,javaandroid中的time或timestamp变量。有什么解决办法吗?
"PT10H30M"
"10:30 AM"
Date
euoag5mw1#
从技术上讲, PT10H30M 不是一个时间,而是一个持续时间:一个时间量(10小时30分钟)。该字符串采用标准iso8601格式。尽管“名称”(10小时30分钟)与 10:30 AM (上午10小时30分钟),它们是完全不同的概念: 10:30 AM 表示一天中的某个时间 PT10H30M 表示时间量-例如,可以添加到日期/时间: 01:00 AM 加上 PT10H30M 结果11:30 AM 11:00 PM 加上 PT10H30M 结果 09:30 AM 第二天的不管怎样,你可以通过增加持续时间来实现你想要的 PT10H30M 到午夜( 00:00 ).在android中,您可以使用threeten backport,这是Java8新的日期/时间类的一个很好的backport。你还需要3TENABP(更多关于如何在这里使用它)。你可以使用 LocalTime (表示时间,包括小时、分钟、秒和纳秒),使用午夜00:00:00.0的常量,并添加 Duration 致:
PT10H30M
10:30 AM
01:00 AM
11:00 PM
09:30 AM
00:00
LocalTime
Duration
import org.threeten.bp.LocalTime; import org.threeten.bp.Duration; LocalTime time = LocalTime.MIDNIGHT.plus(Duration.parse("PT10H30M"));
结果将是 time 保存对应于的值的变量 10:30 AM .如果你想要相应的 String ,您可以使用 org.threeten.bp.format.DateTimeFormatter :
time
String
org.threeten.bp.format.DateTimeFormatter
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH); System.out.println(time.format(fmt));
结果是 String 有价值的 10:30 AM . (注意,我还使用了 java.util.Locale 以确保正确格式化 String ).
java.util.Locale
1条答案
按热度按时间euoag5mw1#
从技术上讲,
PT10H30M
不是一个时间,而是一个持续时间:一个时间量(10小时30分钟)。该字符串采用标准iso8601格式。尽管“名称”(10小时30分钟)与
10:30 AM
(上午10小时30分钟),它们是完全不同的概念:10:30 AM
表示一天中的某个时间PT10H30M
表示时间量-例如,可以添加到日期/时间:01:00 AM
加上PT10H30M
结果11:30 AM
11:00 PM
加上PT10H30M
结果09:30 AM
第二天的不管怎样,你可以通过增加持续时间来实现你想要的
PT10H30M
到午夜(00:00
).在android中,您可以使用threeten backport,这是Java8新的日期/时间类的一个很好的backport。你还需要3TENABP(更多关于如何在这里使用它)。
你可以使用
LocalTime
(表示时间,包括小时、分钟、秒和纳秒),使用午夜00:00:00.0的常量,并添加Duration
致:结果将是
time
保存对应于的值的变量10:30 AM
.如果你想要相应的
String
,您可以使用org.threeten.bp.format.DateTimeFormatter
:结果是
String
有价值的10:30 AM
. (注意,我还使用了java.util.Locale
以确保正确格式化String
).