我必须获取UTC + 5:45的本地时间。我找到并实现了代码,但是随着时间的推移,时间会更新。如何在不更新的情况下进行修复? 这是我实现的代码:
Date localTime = new Date();
String format = "yyyy/MM/dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getTimeZone("UTC+5:45"));
Date gmtTime = new Date(sdf.format(localTime));
System.out.println("Local:" + localTime.toString() + "," + localTime.getTime() + " --> UTC time:"
+ gmtTime.toString() + "," + gmtTime.getTime());
Date fromGmt = new Date(gmtTime.getTime() + TimeZone.getDefault().getOffset(localTime.getTime()));
return String.valueOf(fromGmt);
答案 0 :(得分:2)
使用时:
Date localTime = new Date();
您获得当前时间。 因此,每次您调用new Date()时;时间会有所不同。 您只需调用new Date()一次,然后将该对象用于其余的代码。 如果需要2个不同时区的Date对象,请使用:
Date localTime = new Date();
Date newDate = new Date(localTime.getTime());
这样,您将获得2次同步。
日期没有时区,因此您必须指定年份,月份和日期以及具体时间。
答案 1 :(得分:0)
代码段使我认为这是一种返回格式化的本地时间的方法,请确保只调用一次此方法即可获取时间。而且,如果您要制作的是Android App,则可以使用Log代替System.out.println。
答案 2 :(得分:0)
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Calcutta"));
String pattern = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat simpleDateFormat = new
SimpleDateFormat(pattern, new Locale("eng", "ind"));
String date = simpleDateFormat.format(new Date());
Log.i("get C_d_t", date);