“转换时间”;PT10H30M“;至;上午10:30“;时间JAVA Android
我正在尝试将格式为“转换时间”;PT10H30M“;至;上午10:30“;时间JAVA Android,java,android,time,timestamp,Java,Android,Time,Timestamp,我正在尝试将格式为“PT10H30M”的时间转换为格式为“上午10:30”,并将其保存在Java Android中的日期、时间或时间戳变量上 有什么解决办法吗?从技术上讲,PT10H30M不是一个时间,而是一个表示时间的量(10小时30分钟)。该字符串是标准格式的 虽然“名称”(10小时30分钟)与上午10:30(上午10小时30分钟)相似,但它们是完全不同的概念: 上午10:30表示一天中的某个时间 PT10H30M表示一个时间量-例如,可以添加到日期/时间: 01:00am加上PT10H
“PT10H30M”
的时间转换为格式为“上午10:30”
,并将其保存在Java Android中的日期、时间或时间戳变量上
有什么解决办法吗?从技术上讲,
PT10H30M
不是一个时间,而是一个表示时间的量(10小时30分钟)。该字符串是标准格式的
虽然“名称”(10小时30分钟)与上午10:30
(上午10小时30分钟)相似,但它们是完全不同的概念:
表示一天中的某个时间上午10:30
表示一个时间量-例如,可以添加到日期/时间:PT10H30M
加上01:00am
的持续时间会导致PT10H30M
11:30am
加上11:00 PM
的持续时间导致第二天的PT10H30M
09:30 AM
无论如何,您可以通过将
PT10H30M
的持续时间添加到午夜(00:00
)来实现您想要的
在Android中,您可以使用,这是Java8新的日期/时间类的一个很好的后端口。您还需要(更多关于如何使用它的信息)
您可以使用(表示时间,包括小时、分钟、秒和),使用00:00:00.0,并向其中添加:
结果将是一个time
变量,该变量保存与10:30 AM
对应的值
如果需要相应的
字符串
,可以使用org.threeten.bp.format.DateTimeFormatter
:
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
System.out.println(time.format(fmt));
结果是一个
字符串
,其值为10:30 AM
。(请注意,我还使用了java.util.Locale
来确保字符串格式正确)。从技术上讲,PT10H30M
不是时间,而是表示时间的量(10小时30分钟)。该字符串是标准格式的
虽然“名称”(10小时30分钟)与上午10:30
(上午10小时30分钟)相似,但它们是完全不同的概念:
表示一天中的某个时间上午10:30
表示一个时间量-例如,可以添加到日期/时间:PT10H30M
加上01:00am
的持续时间会导致PT10H30M
11:30am
加上11:00 PM
的持续时间导致第二天的PT10H30M
09:30 AM
无论如何,您可以通过将
PT10H30M
的持续时间添加到午夜(00:00
)来实现您想要的
在Android中,您可以使用,这是Java8新的日期/时间类的一个很好的后端口。您还需要(更多关于如何使用它的信息)
您可以使用(表示时间,包括小时、分钟、秒和),使用00:00:00.0,并向其中添加:
结果将是一个time
变量,该变量保存与10:30 AM
对应的值
如果需要相应的
字符串
,可以使用org.threeten.bp.format.DateTimeFormatter
:
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
System.out.println(time.format(fmt));
结果是一个
字符串
,其值为10:30 AM
。(请注意,我还使用了java.util.Locale
,以确保它正确格式化字符串
)。您希望最终得到什么类型的对象
<代码>日历<代码>日期?我更喜欢日期或时间,我不知道JAVA中是否存在时间戳,但任何类型,只需将“PT10H30M”转换为“10:30am”。您的输入字符串表示未附加到时间线的时间跨度。正确的对象表示形式是java.time中的一个(参见下面Hugo的答案)。一天中的某个时间,如“上午10:30”,不是一段时间。您的输入字符串在该标准定义的时间跨度内已处于正确的文本表示形式。您希望以哪种类型的对象结束<代码>日历
<代码>日期?我更喜欢日期或时间,我不知道JAVA中是否存在时间戳,但任何类型,只需将“PT10H30M”转换为“10:30am”。您的输入字符串表示未附加到时间线的时间跨度。正确的对象表示形式是java.time中的一个(参见下面Hugo的答案)。一天中的某个时间,如“上午10:30”,不是一段时间。您的输入字符串已经在标准定义的这么长时间内以正确的文本表示。这正是我所需要的,非常非常感谢您。只需添加一个,用于导入org.threeten.bp.LocalTime;导入org.threeten.bp.Duration;如果有必要到gradle添加依赖项{compile'com.jakewharton.threetenabp:threetenabp:1.0.3'}@RaZoDiuM On Stack Overflow,欢迎您自己对答案进行修复或添加。这正是我需要的,非常感谢您。只需添加一个,用于导入org.threeten.bp.LocalTime;导入org.threeten.bp.Duration;如果需要转到gradle并在堆栈溢出上添加依赖项{compile'com.jakewharton.threetenabp:threetenabp:1.0.3'}@RaZoDiuM,欢迎您自己对答案进行修复或添加。