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

J2ME Calendar 取得系統時間並格式化為字串完整教學

     編輯:J2ME

前言

在 J2ME 開發中,java.util.Calendar 是處理日期時間的核心類別。但受限於 CLDC 規範,其行為與標準 JDK 略有不同,特別是時區與月份索引的處理常讓初學者踩坑。本文將逐步示範如何正確取得系統時間,並轉換為 YYYYMMDD 格式字串。

關鍵步驟與程式碼解析

1. 取得預設時區與 Calendar 實例

TimeZone tz = TimeZone.getDefault();
Calendar ca = Calendar.getInstance(tz);

注意:WTK 模擬器預設時區可能與實機差 8 小時(GMT+8),實機測試時不會出現此偏差。

2. 擷取年、月、日並轉字串

String strYear  = String.valueOf(ca.get(Calendar.YEAR));
String strMonth = String.valueOf(ca.get(Calendar.MONTH) + 1); // 0=1月
String strDate  = String.valueOf(ca.get(Calendar.DATE));

3. 雙位數補零邏輯

String sysDate;
if (ca.get(Calendar.MONTH) + 1 <= 9 && ca.get(Calendar.DATE) <= 9) {
    sysDate = strYear + "0" + strMonth + "0" + strDate;
} else if (ca.get(Calendar.MONTH) + 1 > 9 && ca.get(Calendar.DATE) > 9) {
    sysDate = strYear + strMonth + strDate;
} else if (ca.get(Calendar.MONTH) + 1 <= 9) {
    sysDate = strYear + "0" + strMonth + strDate;
} else {
    sysDate = strYear + strMonth + "0" + strDate;
}
System.out.println(sysDate); // 輸出範例:20070904

進階技巧:使用 StringBuffer 優化效能

頻繁字串串接會產生大量暫時物件,建議改用 StringBuffer:

StringBuffer sb = new StringBuffer(8);
sb.append(strYear);
if (month < 10) sb.append('0');
sb.append(month);
if (day < 10) sb.append('0');
sb.append(day);
return sb.toString();

常見陷阱總結

  • 月份從 0 起算:Calendar.JANUARY == 0,取值時必須 +1。
  • 模擬器時區差異:開發階段以實機時間為準,必要時手動設定 TimeZone。
  • Calendar 為抽象類別:只能透過 getInstance() 取得具體實作。

結語

掌握 Calendar 的正確用法,能避免日期時間處理中的隱性 Bug,為行動應用的時間相關功能奠定穩固基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved