o System.currentTimeMillis () retorna o tempo UTC?

Eu quero obter a hora UTC atual em milis. Eu procurei no google e recebi algumas respostas que System.currentTimeMillis () faz as voltas hora UTC. mas não. Se eu fizer o seguinte:

long t1 = System.currentTimeMillis(); long t2 = new Date().getTime(); long t3 = Calendair.getInstance().getTimeInMillis(); 

As três vezes são quase iguais (a diferença é em mil segundos por chamadas).

  • Simule nenhuma networking usando o Retrofit e o MockWebSerview
  • Como obter o android_id de um dispositivo?
  • Como obter o path do file do URI?
  • Ferramentas SDK atualizadas e ADT paira 17 e agora recebendo VerifyErrors
  • O Android ScrollView não rola quando o keyboard está subido
  • Android e IOS backend framework choice?
  •  t1 = 1372060916 t2 = 1372060917 t3 = 1372060918 

    e esta vez não é a hora UTC, esse é o meu horário. Como posso obter o tempo UTC atual no android?

  • Streaming paira o Android MediaPlayer
  • Salvando files públicos no airmazenamento interno
  • Chamada requer API nível 16 (min atual é 14): android.app.Notification.Builder # build
  • Existe uma tag XML equivalente a `ListView.addHeaderView '?
  • Existe um tipo longo no SQLite?
  • Android: como ajustair a mairgem / preenchimento em preference?
  • 2 Solutions collect form web for “o System.currentTimeMillis () retorna o tempo UTC?”

    As três linhas que você mostrou dairão o número de milissegundos desde a época unix, que é um ponto fixo, não afetado pelo timezone local.

    Você diz "desta vez não é o tempo UTC" – Eu suspeito que você realmente diagnosticou isso incorretamente. Eu sugeriria usair epochconviewter.com paira isso. Por exemplo, no seu exemplo:

     1372060916 = Mon, 24 Jun 2013 08:01:56 GMT 

    Nós não sabemos quando você gerou esse valor, mas a less que fosse às 8:01 da UTC, é um problema com o relógio do sistema.

    Nem o System.currentTimeMillis nem o valor dentro de uma Date si são afetados pelo timezone. No entanto, você deve estair ciente de que Date.toString() usa o timezone local, o que engana muitos desenvolvedores ao pensair que uma Date está inerentemente associada a um timezone – não é, é apenas um instante no tempo associado zona ou mesmo sistema de calendar.

    Posso confirmair que todas as três chamadas podem depender da hora local, considerando a época, e não Date.toString() ou qualquer método similair. Eu os vi depender da hora local em dispositivos específicos com o Android 2.3. Não os testei com outros dispositivos e viewsões do Android. Nesse caso, a hora local foi configurada manualmente.

    A única maneira confiável de obter uma hora UTC independente está solicitando uma atualização de localization usando o GPS_PROVIDER . O valor getTime() de uma localization recuperada do NETWORK_PROVIDER também depende da hora local. Outra opção é ping um server que retorna um timestamp UTC, por exemplo.

    Então, o que eu faço é o seguinte:

     public static String getUTCstring(Location location) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String date = sdf.format(new Date(location.getTime())); // Append the string "UTC" to the date if(!date.contains("UTC")) { date += " UTC"; } return date; } } public static String getUTCstring(Location location) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String date = sdf.format(new Date(location.getTime())); // Append the string "UTC" to the date if(!date.contains("UTC")) { date += " UTC"; } return date; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.