Como converter uma string Date em longos milésimos de segundo


Respostas:


151

Usando SimpleDateFormat

String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
    Date d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

É hora de alguém dar uma resposta moderna a essa pergunta. Em 2012, quando a pergunta foi feita, as respostas postadas também eram boas. Por que as respostas postadas em 2016 também usam as aulas há muito desatualizadas SimpleDateFormate Dateé um pouco mais um mistério para mim. java.time, a moderna API Java de data e hora, também conhecida como JSR-310, é muito mais agradável de se trabalhar. Você pode usá-lo no Android através do ThreeTenABP, veja esta pergunta: Como usar o ThreeTenABP no Projeto Android .

Para a maioria dos propósitos, eu recomendo usar os milissegundos desde a época no início do dia em UTC . Para obter estes:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
    String stringDate = "12-December-2012";
    long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC)
            .toInstant()
            .toEpochMilli();
    System.out.println(millisecondsSinceEpoch);

Isso imprime:

1355270400000

Se você precisar da hora no início do dia em algum fuso horário específico, especifique esse fuso horário em vez de UTC, por exemplo:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Como esperado, isso dá um resultado ligeiramente diferente:

1355252400000

Outro ponto a ser observado, lembre-se de fornecer uma localidade ao seu DateTimeFormatter. Considerei dezembro como sendo o inglês. Existem outros idiomas em que esse mês é chamado da mesma forma, então, escolha o local apropriado. Se você não forneceu uma localidade, o formatador usaria a configuração de localidade da JVM, que pode funcionar em muitos casos, e depois falhar inesperadamente um dia quando você executar seu aplicativo em um dispositivo com uma configuração de localidade diferente.


9

Dê uma olhada na SimpleDateFormatclasse que pode analisar a Stringe retornar a Datee o getTimemétodo da Dateclasse.



3

você pode usar o simpleDateFormat para analisar a data da string.


1

A maneira mais fácil é usar Date Using Date () e getTime ()

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

1

usando simpledateformat, você pode obtê-lo facilmente.

1) Primeiro, converta string para java.Date usando simpledateformatter.

2) Use o método getTime para obter a contagem de milissegundos a partir da data

 public class test {
      public static void main(String[] args) {
      String currentDate = "01-March-2016";
      SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
     Date parseDate = f.parse(currentDate);
     long milliseconds = parseDate.getTime();
  }
        }

mais Exemplo clique aqui


0

Experimente o código abaixo

        SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
        Date d = null;
        try {
            d = f.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long timeInMillis = d.getTime();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.