You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP/Laravel/JS中直接获取Windows系统本地时间无需修改时区

Windows环境下无需修改时区直接获取本地系统时间实现方案

PHP 实现(Windows服务器端)

无需修改php.ini中的date.timezone配置,通过Windows内置的WMI接口直接读取系统本地时间,仅需提前开启PHP的COM扩展:

// 初始化WMI连接
$wmi = new COM('winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2');
// 查询系统本地时间
$timeResult = $wmi->ExecQuery("SELECT * FROM Win32_LocalTime");

foreach ($timeResult as $item) {
    $systemLocalTime = sprintf(
        "%04d-%02d-%02d %02d:%02d:%02d",
        $item->Year,
        $item->Month,
        $item->Day,
        $item->Hour,
        $item->Minute,
        $item->Second
    );
}

echo $systemLocalTime;

该方法获取的时间直接和Windows系统时间同步服务的结果对齐,完全不受PHP时区配置影响。

JS 实现

分两种运行场景提供方案:

  • 浏览器端(用户本地Windows设备运行)
    浏览器端JS的Date对象默认直接读取宿主系统(当前Windows设备)的本地时间,无需任何时区调整配置:

    const localDate = new Date();
    // 示例格式化输出 YYYY-MM-DD HH:mm:ss
    const formattedTime = `${localDate.getFullYear()}-${String(localDate.getMonth() + 1).padStart(2, '0')}-${String(localDate.getDate()).padStart(2, '0')} ${String(localDate.getHours()).padStart(2, '0')}:${String(localDate.getMinutes()).padStart(2, '0')}:${String(localDate.getSeconds()).padStart(2, '0')}`;
    console.log(formattedTime);
    
  • Node.js端(Windows服务器运行)
    调用Windows原生系统命令读取本地时间,无需修改Node.js运行时的时区设置:

    const { execSync } = require('child_process');
    // 调用wmic命令获取系统时间
    const cmdResult = execSync('wmic os get LocalDateTime /value').toString().trim();
    const timeMatch = cmdResult.match(/LocalDateTime=(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/);
    const systemLocalTime = `${timeMatch[1]}-${timeMatch[2]}-${timeMatch[3]} ${timeMatch[4]}:${timeMatch[5]}:${timeMatch[6]}`;
    
    console.log(systemLocalTime);
    

内容的提问来源于stack exchange,提问作者Luiz Santa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:54:06