您如何获取本地时间,并且不更改时间?

时间:2018-10-04 11:59:46

标签: android android-studio localtime

我必须获取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);

3 个答案:

答案 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);