временная метка возврата Android в миллисекундах - PullRequest
0 голосов
/ 11 апреля 2011

привет всем, у меня возникла проблема с преобразованием даты и времени в миллисекунды. Может ли кто-нибудь помочь мне с этим, в коде нет ошибок, но он возвращает неправильную дату и время в миллисекундах

это дата конвертации: 2011-03-01 17:55:15 и это дает мне этот номер: -679019461843345152

и это код, который я использую:

public long getDate(String s){
       //this is returning a timestamp but the wrong ones!!! 

        String[] formats = new String[] {
              // "yyyy-MM-dd",
               "yyyy-MM-dd HH:mm:ss"
              // "yyyy-MM-dd HH:mmZ",
              //"yyyy-MM-dd HH:mm:ss.SSSZ",
             };

        SimpleDateFormat sdf=null;
        String st;

        for (String format : formats) {
               sdf = new SimpleDateFormat(format, Locale.US);
               //System.err.format("%30s %s\n", format, sdf.format(new Date(0)));

               sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
               st = new String(sdf.format(new Date(0)));
               System.err.format(format, st);
        }


        // compute nanoseconds from y, m...

        //return that number 
         Calendar c = Calendar.getInstance();
            c.set(sdf.YEAR_FIELD, sdf.MONTH_FIELD, sdf.DATE_FIELD, sdf.HOUR0_FIELD, sdf.MINUTE_FIELD, sdf.SECOND_FIELD);
            return c.getTimeInMillis() * 1000000;   

     }  

1 Ответ

2 голосов
/ 11 апреля 2011

Строка c.set не имеет никакого смысла:

c.set(sdf.YEAR_FIELD, sdf.MONTH_FIELD, sdf.DATE_FIELD, sdf.HOUR0_FIELD, sdf.MINUTE_FIELD, sdf.SECOND_FIELD);

Это должно дать вам представление:

       Calendar c = Calendar.getInstance();
       try {
           dt = sdf.parse("2011-03-01 17:55:15"); 
       } catch (ParseException e) {
           System.err.println("There's an error in the Date!");
           return null;
       }   
       Date dt = sdf.parse("2011-03-01 17:55:15");   
       c.setTime(dt);
       System.out.println( c.getTimeInMillis() * 1000000);   
       System.out.println(dt.toString());   

вывод:

1299002115000000000
Tue Mar 01 12:55:15 EST 2011

Кстати, вы никогда не обращаетесь к параметру s.

...