无论时区域如何,以UTC格式获取设备时间



我如何获得设备的本地时间并将其转换为我所在国家/地区的全局UTC格式?

根本没有获得 local 时间 - 只需获得UTC值,例如,例如。

long millis = System.currentTimeMillis();

或:

Date date = new Date();

如果您需要将其格式化为字符串,请使用SimpleDateFormat,但请记住适当设置时区。例如:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                                               Locale.US);
format.setTimeZone(TimeZone.getTimeZone("Etc/Utc"));
String text = format.format(new Date());

(目前尚不清楚您所说的"我国家的全局UTC格式" -UTC简单全局,而不是格式,它是时区。)

现有答案是正确的,他们在2012年11月提供了正确的方向(当提出问题时)。2014年3月,现代日期API作为 Java 8标准库的一部分发布,它取代了容易出错的java.util Date Time API及其相应的解析/格式化类型SimpleDateFormat,并且自从然后强烈建议切换到java.time,即现代日期API。

使用java.time

解决方案

您可以简单地使用Instant#now将当前矩独立于时区(即在UTC)。请注意,java.time API基于ISO 8601标准。

如果您需要特定时区的当前日期时间,则可以使用ZonedDateTime#now(ZoneId),也可以以所需格式格式化。

演示:

class Main {
    public static void main(String[] args) {
        // Current moment
        System.out.println(Instant.now());
        // Current date-time in a specific timezone e.g. America/New_York
        ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("America/New_York"));
        System.out.println(zdt);
        // Output in a custom format e.g. EEE MMM dd, uuuu 'at' hh:mm:ss a
        String formattedStr = zdt.format(DateTimeFormatter.ofPattern("EEE MMM dd, uuuu 'at' hh:mm:ss a", Locale.ENGLISH));
        System.out.println(formattedStr);
    }
}

在线演示

注意:永远不要使用DateTimeFormatter进行自定义格式,而无需LocaleSimpleDateFormat

trail:日期时间

了解有关现代日期API的更多信息

不确定您想做什么,但是如果您想要以正常格式的日期和时间,可以这样做:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Calendar cal = Calendar.getInstance();
String dateAndTime = dateFormat.format(cal.getTime());

String DateAndTime将像2012/01/01 11:13一样,根据日期&设备设置的时间,因此与设备的时钟相同的时间。您可以通过将"yyyy/MM/dd HH:mm"更改为您喜欢的任何东西来稍微播放格式。

希望这会有所帮助!

更新:要使UTC时间这样做:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateAndTimeUTC = dateFormat.format(new Date());

相关内容

  • 没有找到相关文章

最新更新