`localtime()` 回傳 `struct tm*` (年份從 1900 起算、月份 0-11),轉 `System::DateTime` (C++/CLI) 需手動映射欄位。
using namespace System;
DateTime ConvertLocaltimeToDateTime(const tm* localTime) {
if (!localTime) return DateTime::MinValue;
return DateTime(
localTime->tm_year + 1900, // 年
localTime->tm_mon + 1, // 月 (1-12)
localTime->tm_mday, // 日
localTime->tm_hour, // 時
localTime->tm_min, // 分
localTime->tm_sec // 秒
);
}
// 使用範例
time_t raw = time(nullptr);
tm* local = localtime(&raw);
DateTime dt = ConvertLocaltimeToDateTime(local);
// 寫入資料庫 (參數化查詢)
cmd->Parameters->AddWithValue("@dt", dt);
DateTime dt = DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind::Utc)
.AddSeconds(static_cast<double>(raw))
.ToLocalTime(); // 或保持 UTC 存儲
DATETIME2 (SQL Server) / TIMESTAMP WITH TIME ZONE (PostgreSQL) 保留時區資訊。