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

Java 取得當前日期與格式化輸出實作範例

     編輯:Java 相關知識

示範使用 Calendar、TimeZone 取得指定時區(GMT+8)的當前時間戳,並轉為 Timestamp 後拆解年月日進行格式化輸出。

完整程式碼

package com.infomorrow.dao;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.TimeZone;
import org.junit.Test;

public class DateDemo {
    @Test
    public void testCurrentDate() {
        // 取得 GMT+8 時區的當前毫秒數
        Timestamp now = new Timestamp(
            Calendar.getInstance(TimeZone.getTimeZone("GMT+8")).getTimeInMillis()
        );

        // Timestamp 繼承 java.util.Date,getYear()/getMonth()/getDate() 已棄用但仍可用
        int year  = now.getYear() + 1900;   // getYear() 回傳距 1900 年的偏移量
        int month = now.getMonth() + 1;     // getMonth() 0~11
        int day   = now.getDate();          // 1~31

        String formatted = String.format("%d-%02d-%02d", year, month, day);
        System.out.println("date: " + formatted); // 例:date: 2013-12-17
        System.out.println(now);                  // 例:2013-12-17 13:04:30.809
    }
}

現代化替代方案(Java 8+ 推薦)

使用 java.time 套件,API 更清晰、不可變、執行緒安全:

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class ModernDateDemo {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Taipei")); // GMT+8
        String formatted = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        System.out.println("date: " + formatted);
        System.out.println(now); // 2024-05-20T14:30:45.123
    }
}

關鍵差異比較

特性Calendar / Timestamp (舊 API)java.time (新 API)
執行緒安全否 (Calendar 可變)是 (不可變物件)
時區處理TimeZone 較繁瑣ZoneId 直觀
格式化SimpleDateFormat 非執行緒安全DateTimeFormatter 執行緒安全
月份索引0-based (0=一月)1-based (1=一月)

結論:新專案請優先使用 java.time;維護舊代碼時注意 Calendar 月份 0-based 與 Timestamp 年份偏移 1900 的坑。

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