Datetime Java-在J2ME中使用日期/时间

Datetime Java-在J2ME中使用日期/时间,datetime,java-me,Datetime,Java Me,在J2ME中,如何从日期对象中提取时间部分并将其用作字符串 如何在J2ME中将时间字符串转换回日期对象 我已经做了一些事情来实现这一点,但它没有显示正确的时间。我使用以下代码来获取时间: String getDateString(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR);

在J2ME中,如何从日期对象中提取时间部分并将其用作字符串

  • 如何在J2ME中将时间字符串转换回日期对象


  • 我已经做了一些事情来实现这一点,但它没有显示正确的时间。

    我使用以下代码来获取时间:

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

    这就可以了。

    如果您使用CDC,您可以访问
    java.text.DateFormat
    ,这是(据我所知)使用代码处理非Joda时间的日期/时间的“标准”方法


    如果您使用的是CLDC,您可能必须手动滚动某些内容,因为它没有
    java.text
    包。

    您使用的是来自核心库的日期、joda时间或任何其他?我使用第一个列表来获取时间,但它显示的时间与我的本地时间相差近6小时。没问题,请调用Calendar.getInstance(时区)使用您需要的任何参数。