2009-07-11 20 views
4
  1. Dateオブジェクトから時間部分を抽出し、それをJ2MEのStringとして使用する方法はありますか? J2MEでオブジェクト - バック日にその時、文字列を変換する方法Java - J2MEの日付/時刻の操作

私はこれを達成するために何かをしましたが、正しい時間を示していません。

+0

あなたはコアlibに、ジョダ時間、または任意の他の日付を使用していますか? – Macarse

+0

私は時間を取得するために、リスト1を使用java.utils.Date –

答えて

7

私は時間を取得するには、次ののコードを使用します。

String getDateString(Date date) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 

    int year = calendar.get(Calendar.YEAR); 
    int month = calendar.get(Calendar.MONTH); 
    int day = calendar.get(Calendar.DAY_OF_MONTH); 
    int hour = calendar.get(Calendar.HOUR_OF_DAY); 
    int minute = calendar.get(Calendar.MINUTE); 
    int second = calendar.get(Calendar.SECOND); 

    return new String(/*Any format you need*/); 
} 

あなたが番号を取得して、あなたが必要な任意のフォーマットで出力してすることができます。

Date createDate(String dateString) { 
    //Extract needed numbers first 
    StringBuffer strBuf = new StringBuffer(dateString); 

    char[] charBuf = new char[4]; 

    strBuf.getChars(0, 3, charBuf, 0); 
    dayOfWeek = new String(charBuf, 0, 3); 

    strBuf.getChars(strBuf.length() - 4, strBuf.length(), charBuf, 0); 
    year = charsToInt(charBuf, 4); 

    strBuf.getChars(4, 7, charBuf, 0); 
    String monthStr = new String(charBuf, 0, 3); 
    month = ArraySearcher.searchStringEntry(monthStr, MONTHS); 

    day = extractShortField(strBuf, 8, charBuf); 
    hour = extractShortField(strBuf, 11, charBuf); 
    minute = extractShortField(strBuf, 14, charBuf); 
    second = extractShortField(strBuf, 17, charBuf); 

    //Now set the calendar 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.YEAR, year); 
    calendar.set(Calendar.MONTH, month); 
    calendar.set(Calendar.DAY_OF_MONTH, day); 
    calendar.set(Calendar.HOUR_OF_DAY, hour); 
    calendar.set(Calendar.MINUTE, minute); 
    calendar.set(Calendar.SECOND, second); 

    return calendar.getTime(); 
} 

private int charsToInt(char[] buf, int len) { 
    String str = new String(buf, 0, len); 
    return Integer.parseInt(str); 
} 

private int extractShortField(StringBuffer strBuf, int start, char[] charBuf) { 
    strBuf.getChars(start, start + 2, charBuf, 0); 
    return charsToInt(charBuf, 2); 
} 

トリックを行います:

Dateオブジェクトを作成するのコードは次のようなものです。

+0

使用していますが、それは私のローカル時間と、ほぼ6時間と異なる時間を示しています。 –

+0

問題ありません、あなたが必要な任意のパラメータでCalendar.getInstance(TimeZoneのゾーン)を呼び出します。 – Malcolm

0

CDCを使用している場合は、java.text.DateFormatにアクセスできます(これは、私が知る限り)、Joda以外の時間のコードの日付/時刻を処理する「標準的な」方法です。

あなたはCLDCを使用している場合、それは何のjava.textパッケージを持っていないので、あなたはおそらく、手で何かをロールバックする必要があります。