Java 如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?

Java 如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?,java,android,android-studio,simpledateformat,android-timepicker,Java,Android,Android Studio,Simpledateformat,Android Timepicker,我有两个编辑文本供用户输入时间(24小时格式)。 如何从Edittext中获取这些时间,并从用户选择的时间中扣除5小时30分钟 扣除时间的原因:将IST转换为UTC时区 我的最终输出应该是-HH:MM:SS:Milleseconds(例如:18:25:30:245635) 提前感谢。java.time 输出为: UTC时间:12:55:30.245635 我假设今天的日期。请检查此假设是否适合您。虽然亚洲/加尔各答的UTC偏移量最近没有太大变化,但其他时区每年更改两次其偏移量 我改变了你的时间格

我有两个编辑文本供用户输入时间(24小时格式)。 如何从Edittext中获取这些时间,并从用户选择的时间中扣除5小时30分钟

扣除时间的原因:将IST转换为UTC时区

我的最终输出应该是-HH:MM:SS:Milleseconds(例如:18:25:30:245635)

提前感谢。

java.time 输出为:

UTC时间:12:55:30.245635

我假设今天的日期。请检查此假设是否适合您。虽然亚洲/加尔各答的UTC偏移量最近没有太大变化,但其他时区每年更改两次其偏移量

我改变了你的时间格式,在秒和秒的分数之间有一个句号(点),而不是冒号。如果确实需要冒号,则需要
DateTimeFormatter
进行解析

问题:我可以在Android上使用java.time吗? 是的,java.time在较旧和较新的Android设备上运行良好。它至少需要Java6

  • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
  • 在Java6和Java7中,获取三个后端口,即现代类的后端口(三个十用于JSR310;参见底部的链接)
  • 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
    org.threeten.bp
    导入日期和时间类
链接
  • 解释如何使用java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

这很容易做到,您尝试过什么?我尝试过使用SimpleDate格式和日期类进行解析。但是结果并不像预期的那样。考虑一下,而不是设计得不好的和旧的代码> SimpleDateFormat < /代码>和<代码>日期<代码>。是的,您可以在Android上使用java.time。对于较老的Android,请参阅。我担心的是,减去5:30并不总是正确的。自第二次世界大战以来,它一直是印度对UTC的补偿,但并不总是如此,也可能不会一直如此。我们能假定一个日期吗?@OleV.V.-那么,你建议我怎样才能得到想要的结果呢。任何例子都会对我有帮助-谢谢伙计,你真的节省了我的时间。
    ZoneId zone = ZoneId.of("Asia/Kolkata");
    String timeString = "18:25:30.245635";
    LocalTime time = LocalTime.parse(timeString);
    LocalTime utcTime = LocalDate.now(zone)        // Today
            .atTime(time)                          // Today at the time in question
            .atZone(zone)                          // Date and time in IST
            .toOffsetDateTime()                    // Convert to OffsetDateTime for the next step
            .withOffsetSameInstant(ZoneOffset.UTC) // Convert to UTC
            .toLocalTime();                        // Extract only the time of day
    System.out.println("UTC time: " + utcTime);