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

J2ME 時間處理完全指南:System、Date、Calendar 三大類別操作詳解

     編輯:J2ME

J2ME 時間處理涉及 System、Date、Calendar 三個類別,各有適用場景。本文整理三者轉換、常用操作與月份陷阱注意事項。

三種時間表示方式比較

類別/方法表示形式適用場景
System.currentTimeMillis()long 毫秒數(GMT 1970/1/1 起)時間差計算、時間戳記、排序比較
new Date()Date 物件簡單顯示、序列化、RMS 儲存
Calendar.getInstance()Calendar 物件日期運算、欄位擷取(年/月/日/週)、格式化

三者相互轉換

// 1. long -> Date
Date date = new Date(System.currentTimeMillis());

// 2. Date -> Calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);

// 3. Calendar -> Date
Date date2 = cal.getTime();

// 4. Calendar -> long
long ms = cal.getTimeInMillis();  // CLDC 1.1+ / MIDP 2.0+
// 或
long ms = cal.getTime().getTime();

Calendar 核心操作


Calendar cal = Calendar.getInstance();  // 目前時間

// 擷取欄位
int year   = cal.get(Calendar.YEAR);       // 年(如 2024)
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 minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int dow    = cal.get(Calendar.DAY_OF_WEEK); // 星期:1=Sunday, 7=Saturday

// 日期運算
cal.add(Calendar.DATE, 7);   // 加 7 天
cal.add(Calendar.MONTH, -1); // 減 1 月
cal.set(Calendar.YEAR, 2025); // 設定年份

// 格式化輸出(需自行組合)
String formatted = cal.get(Calendar.YEAR) + "/" +
    (cal.get(Calendar.MONTH)+1) + "/" +
    cal.get(Calendar.DATE);

關鍵陷阱:月份從 0 開始

Calendar.JANUARY = 0,Calendar.DECEMBER = 11。
顯示給使用者時 必須 +1;解析使用者輸入時 必須 -1。

實務建議

  • 時間戳儲存:RMS/伺服器溝通統一用 long 毫秒數,跨平台、跨時區最安全
  • Date.toString() 格式因實作而異,不可依賴解析
  • 時區:J2ME Calendar 無時區 API,預設為裝置本地時間。跨時區應用需自行維護偏移量
  • 效能:Calendar.getInstance() 較重,避免在高頻迴圈/繪圖中呼叫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved