有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将UTC字符串转换为UTC日期[Android Java]

我想将UTC时间转换为日期。它应该返回日期为

预期结果是:2020-09-01T08:44:25.654Z

输出为->"Tue Sep 01 14:14:25 GMT+05:30 2020"

我得到了UTC但它在String我想要同样的formatDate datatype

我希望它是Date和上面的UTC格式

有人知道怎么得到它吗

public static Date convertToUtcTime(Date date) throws ParseException {
     SimpleDateFormat sdf = new SimpleDateFormat(DateFormats.yyyyMMddThhmmssZ);  //"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
     sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

     return sdf.parse(sdf.format(date));
}

我也不想使用toInstant方法

[更新]

Date strFromDate;
try {
     strFromDate = AppUtils.convertToUtcTime(myCalendar.getTime());
} catch (ParseException e) {
     e.printStackTrace();
}

然后将strFromDate传递给api请求 我没有从strFromDate得到预期的结果


共 (1) 个答案

  1. # 1 楼答案

    你最喜欢的演员是谁?假设是Amitabh Bachchan。无论他扮演什么角色,他仍然是自己(这就是为什么导演/制片人会向他提供下一份工作)😊). 他的表演根据角色来装饰自己的形象。导演们利用他的演技得到的是一个按照指定角色代表他的装饰性角色。然后你说阿弥陀佛·巴赫禅是angry young man或阿弥陀佛·巴赫禅是coolie等等。)

    类似地,无论你要求java.util.Date采取什么样的外观(使用SimpleDateFormat),它总是表示从1970-01-01T00:00:00Z开始的毫秒数。它没有任何时区或区域偏移信息。从这毫秒开始,Java根据JVM的时区计算日期和时间,然后将获得的日期和时间与JVM的时区相结合,最后在调用其toString()方法时返回字符串。我相信您已经知道,当您使用System.out.println打印对象时,对象的toString()方法返回的字符串会被打印出来。查看this了解java.util.DatetoString()实现的更多详细信息。ASimpeDateFormat根据模式更改java.util.Date的外观。使用SimpeDateFormat得到的是一个装饰字符串,按照指定的模式表示Date对象。然后你说Date作为EEE MMMM dd, yyyy HH:mm模式的字符串,或者Date作为yyyy-MM-dd HH:mm:ss模式的字符串等等

    摘要是:不能通过指定不同的模式来更改Date对象。如果打印它,您将始终获得其toString()函数返回的字符串。如果你想要一个不同的字符串,你可以使用SimpleDateFormat

    建议:

    我建议您从过时且容易出错的java.util日期时间API和SimpleDateFormat切换到modern{}日期时间API和相应的格式化API(包java.time.format)。从Trail: Date Time了解有关现代日期时间API的更多信息

    如果您的Android API级别仍然不符合Java8,请检查How to use ThreeTenABP in Android ProjectJava 8+ APIs available through desugaring