【问题标题】:How to parse String date to other date for other timezone如何将字符串日期解析为其他时区的其他日期
【发布时间】:2019-01-07 14:15:02
【问题描述】:

鉴于我有这样的字符串日期

val date =  "2019-01-07T13:54:00+0000"

如何将此日期解析为其他时区,例如“亚洲/加尔各答”?

我在尝试:

val zone = DateTimeZone.forID("Asia/Kolkata")

val resultMillis = ISODateTimeFormat
    .dateTimeParser()
    .withZone(zone)
    .parseDateTime(date)

但是没有用

【问题讨论】:

标签: android datetime kotlin jodatime android-jodatime


【解决方案1】:

这是一个两步过程:解析到字符串中的偏移量或时区,然后转换为所需的时区。我只会写Java代码,我相信你会翻译:

    DateTimeZone zone = DateTimeZone.forID("Asia/Kolkata");
    String date = "2019-01-07T13:54:00+0000";
    DateTime dt = ISODateTimeFormat.dateTimeParser()
            .parseDateTime(date)
            .withZone(zone);
    System.out.println(dt);

输出是:

2019-01-07T19:24:00.000+05:30

你快到了。我在文字上只是将呼叫交换为withZoneparseDateTime

【讨论】:

    【解决方案2】:

    TimeZone 类从我脑海中浮现出来:

    val date =  "2019-01-07T13:54:00+0000"
    val zone = TimeZone.getTimeZone("Asia/Kolkata")
    

    Calendar 明白:

    val calendar = Calendar.getInstance(zone)
    

    那么SimpleDateFormat 应该这样做:

    val format = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
    val simpleDateFormat = new SimpleDateFormat(format, Locale.ENGLISH);
    calendar.setTime(sdf.parse(date));
    

    【讨论】:

    • 但是如何将日期传递给日历?
    • 我相信我发布的SimpleDateFormat 应该可以工作。代码没有运行,但你明白了。
    • 它不起作用 - 我正在使用这个epochconverter.com 来检查
    猜你喜欢
    • 2011-08-30
    • 2021-03-15
    • 2017-02-26
    • 1970-01-01
    • 2011-05-28
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多