Datetime Java-在J2ME中使用日期/时间
在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);
我已经做了一些事情来实现这一点,但它没有显示正确的时间。我使用以下代码来获取时间:
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(时区)使用您需要的任何参数。