Java 以UTC格式获取设备时间,不考虑时区

Java 以UTC格式获取设备时间,不考虑时区,java,android,datetime,timezone,utc,Java,Android,Datetime,Timezone,Utc,如何获取设备的本地时间并将其转换为我所在国家/地区的全球UTC格式?根本不获取本地时间-只需获取UTC值即可,例如 long millis = System.currentTimeMillis(); 或: 如果需要将其格式化为字符串,请使用SimpleDateFormat,但请记住适当设置时区。例如: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",

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

根本不获取本地时间-只需获取UTC值即可,例如

long millis = System.currentTimeMillis();
或:

如果需要将其格式化为字符串,请使用
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只是一种全球格式,它不是一种格式,而是一个时区。)

不确定您想做什么,但如果您希望日期和时间采用正常格式,您可以这样做:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
Calendar cal = Calendar.getInstance();
String dateAndTime = dateFormat.format(cal.getTime());
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateAndTimeUTC = dateFormat.format(new Date());
根据设备设置的日期和时间,字符串dateAndTime类似于
2012/01/01 11:13
,因此它显示的时间与设备的时钟相同。 通过将
“yyyy/MM/dd HH:MM”
更改为您喜欢的任何格式,您可以稍微调整一下格式

希望这有帮助

更新: 要获取UTC时间,请按以下方式执行:

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

不清楚谁会返回我国的UTC时间,下面代码的结果返回当前时间而不考虑时区:长DATEIN MILIIS = SurvivTimeMILISH();字符串格式=“yyyy-MM-dd HH:MM:ss”;最终SimpleDataFormat sdf=新SimpleDataFormat(格式);String dateString=sdf.format(新日期(dateInMillis))@user1812264:没有“我的国家的UTC时间”-UTC是全球性的。@user1812264:只需
new Date()
将以UTC表示当前时间,但您尚未在
SimpleDataFormat
中设置时区,因此默认为本地时区。您必须显式地将其设置为UTC<代码>日期本身不知道时区。erm认为我是时区方面的专家,我一直认为GMT是时区,而不是UTC?唯一让我感到不安全的是,事实是,在Stackoverflow上拥有50多万信用的Jon Skeet说了些别的话!马丁南德森:嗯,伦敦观察到的时区通常被称为“欧洲/伦敦”,在格林尼治标准时间和英国夏令时之间变化。UTC通常被视为一个时区。GMT总是UTC+0(据我所知),但在我看来,谈论处于“GMT”时区是不合适的。UTC是一种更合理的方法。。。首先,它不太以英国为中心。除了在当地时区之外,不是UTC。是的,但是
user1812264
要求提供他所在国家的时间。他要求提供“我所在国家的全球UTC格式”-不清楚,但给出了标题,我不相信他真的想要本地时间。谢谢大家的反馈,但情况如下:我需要使用UTC时间发出HTTP请求,而不管我当前的时间和时区如何,因为服务器处理所有请求的UTC时间。@UBA\U MobileTeam在这种情况下,您可以使用
.setTimeZone()
。请参阅更新的答案