0

日付と時刻をミリ秒に変換する際に問題があります。コードにエラーはありませんが、間違った日付と時刻 (ミリ秒単位) が返されます。

これは私が変換している日付です: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;
}
4

1 に答える 1

2

行 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 にアクセスすることはありません。

于 2011-04-11T03:17:29.610 に答える