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

PHP 與 Java 日期時間函式對照學習:date、strtotime vs Date、SimpleDateFormat

     編輯:PHP 綜合知識

PHP 日期時間核心函式

date():格式化輸出

echo date("d");  // 月份中的第幾天 (01-31) -> 13
echo date("D");  // 週幾縮寫 (Mon-Sun) -> Fri
echo date("N");  // ISO-8601 週幾數字 (1-7) -> 5
echo date("l");  // 週幾完整名稱 -> Friday
echo date("n");  // 月份數字 (1-12) -> 5
echo date("L");  // 是否閏年 (1/0) -> 1
echo date("Y-m-d H:i:s"); // 完整格式 -> 2016-05-13 15:19:49

strtotime():字串轉時間戳

echo date("Y-m-d H:i:s", strtotime("-1 day"));      // 昨天
echo date("Y-m-d H:i:s", strtotime("+1 day"));      // 明天
echo date("Y-m-d H:i:s", strtotime("+1 week"));     // 下週
echo date("Y-m-d H:i:s", strtotime("+1 month"));    // 下個月
echo date("Y-m-d H:i:s", strtotime("next Monday")); // 下週一
echo date("Y-m-d H:i:s", strtotime("+1 week 2 day 2 hour")); // 組合相對時間

優勢:自然語言解析極其強大,支援相對時間、週期、組合表達式。

Java 日期時間核心類別(java.util / java.text)

Date + SimpleDateFormat

import java.util.Date;
import java.text.SimpleDateFormat;

Date date = new Date(); // 當前時間
long timestamp = date.getTime(); // 毫秒級時間戳

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatted = sdf.format(date); // 2016-05-13 15:19:49

Java 8+ 新 API (java.time) —— 推薦用法

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

LocalDateTime now = LocalDateTime.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = now.format(fmt);

// 時間戳互轉(秒級)
long epochSec = now.toEpochSecond(ZoneOffset.UTC);
LocalDateTime fromSec = LocalDateTime.ofEpochSecond(epochSec, 0, ZoneOffset.UTC);

關鍵差異對照表

功能PHPJava (傳統)Java 8+
取得當前時間time() / new DateTime()new Date()LocalDateTime.now()
格式化輸出date("Y-m-d H:i:s")SimpleDateFormat.format()DateTimeFormatter.format()
解析字串strtotime() / DateTime::createFromFormat()SimpleDateFormat.parse()LocalDateTime.parse()
相對運算strtotime("+1 day")Calendar.add()plusDays(1) / minusHours(2)
時間戳單位秒毫秒秒/奈秒
執行緒安全無狀態函式,安全SimpleDateFormat 非安全DateTimeFormatter 安全

實務建議

  • PHP 專案統一用 DateTime 物件導向介面,避免 date() + strtotime() 混用造成時區混淆
  • Java 新專案務必用 java.time,棄用 Date/Calendar/SimpleDateFormat
  • 跨語言傳遞時間一律用 ISO 8601 字串(2016-05-13T15:19:49+08:00)或 Unix 秒級時間戳
  • 資料庫儲存建議用 TIMESTAMP 或 DATETIME,應用層統一轉 UTC 存儲
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved