首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2ME 時間處理完全指南:三大核心類別與實戰操作

     編輯:Java 相關知識

J2ME (CLDC/MIDP) 時間處理涉及 System、Date、Calendar 三大類別,兩種時間表達方式(毫秒長整數與物件模型)。本文系統整理轉換技巧與常用日期運算。

一、時間的兩種表達方式

  1. 長整數毫秒值:自 GMT 1970-01-01 00:00:00 起經過的毫秒數,適合時間差計算、排序、儲存
  2. 物件模型:Date、Calendar 物件,適合顯示、欄位擷取、日期運算

二、三大核心類別速查

類別關鍵方法用途
SystemcurrentTimeMillis()取得當前毫秒時間戳(長整數)
java.util.Datenew Date()
new Date(long ms)
getTime()
日期物件建構、毫秒值互轉
java.util.CalendargetInstance()
get(field)
setTime(Date)
add(field, amount)
日期欄位存取、運算、與 Date 互轉

三、三種表達方式互轉

1. System 毫秒值 → Date 物件

Date date = new Date(System.currentTimeMillis());

2. Date 物件 → Calendar 物件

Calendar calendar = Calendar.getInstance();
Date date = new Date();
calendar.setTime(date);

3. Calendar → Date → 毫秒值

Date date = calendar.getTime();
long ms = date.getTime(); // 或 calendar.getTimeInMillis() (J2SE)

四、Calendar 日期欄位操作實戰

Calendar cal = Calendar.getInstance();
// 取得當前日期資訊
int year  = cal.get(Calendar.YEAR);       // 年
int month = cal.get(Calendar.MONTH);      // 月:0=1月, 11=12月 ⚠️
int day   = cal.get(Calendar.DATE);       // 日 (1~31)
int hour  = cal.get(Calendar.HOUR_OF_DAY);// 時 (0~23)
int min   = cal.get(Calendar.MINUTE);     // 分
int sec   = cal.get(Calendar.SECOND);     // 秒
int dow   = cal.get(Calendar.DAY_OF_WEEK); // 星期:1=星期日, 7=星期六

⚠️ 關鍵陷阱: Calendar.MONTH 以 0 起始(0=一月,11=十二月),顯示時需 +1;DAY_OF_WEEK 以 1 起始(1=星期日)。

五、日期運算:add() 與 roll()

// 日期加減(會連帶改變月份/年份)
cal.add(Calendar.DATE, 10);    // 10 天後
cal.add(Calendar.MONTH, -1);   // 1 個月前
cal.add(Calendar.YEAR, 1);     // 1 年後

// 單一欄位滾動(不改變較大單位)
cal.roll(Calendar.DATE, 5);    // 日 +5,超過月份不進位
cal.roll(Calendar.MONTH, 2);   // 月 +2,不改變年份

六、格式化輸出(J2ME 精簡環境)

J2ME 無 SimpleDateFormat,需手動拼裝或使用 DateFormat(MIDP 2.0+):

// MIDP 2.0 標準格式化
import javax.microedition.lcdui.DateFormat;
String formatted = DateFormat.format(cal.getTime()); // 依區域設定

// 手動拼裝範例
String manual = cal.get(Calendar.YEAR) + "-" +
    (cal.get(Calendar.MONTH) + 1) + "-" +
    cal.get(Calendar.DATE) + " " +
    cal.get(Calendar.HOUR_OF_DAY) + ":" +
    cal.get(Calendar.MINUTE);

七、完整範例:計算兩日期天數差

public static long daysBetween(Date d1, Date d2) {
    long ms1 = d1.getTime();
    long ms2 = d2.getTime();
    long diffMs = Math.abs(ms1 - ms2);
    return diffMs / (24 * 60 * 60 * 1000); // 毫秒轉天
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved