2009-07-11 3 views
4
  1. Как извлечь временную часть из объекта Date и использовать ее как строку в J2ME?Java - Работа с датой/временем в J2ME

  2. Как преобразовать эту строку времени в Date - объект в J2ME?

Я сделал что-то для достижения этого, но он не показывает правильное время.

+0

Вы используете дату из основного lib, joda time или любого другого? – Macarse

+0

Я использую java.utils.Date – 2009-07-11 15:08:27

ответ

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 что-то вроде этого:

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); 
} 

Это будет делать трюк.

+0

Я использовал первый список, чтобы получить время, но он показывает время, которое отличается почти 6 часами с моим местным временем. – 2009-07-11 15:40:59

+0

Не проблема, вызовите Calendar.getInstance (зону TimeZone) с любым параметром, который вам нужен. – Malcolm

0

Если вы используете CDC, у вас есть доступ к java.text.DateFormat, который (насколько мне известно) является «стандартным» способом обработки дат/времени для кода, не использующего Joda-Time.

Если вы используете CLDC, вам, вероятно, придется рулон что-то вручную, потому что у него нет пакета java.text.