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

局域网内获取其他机器时间戳及PHP获取指定机器时间戳问询

局域网时间戳获取与PHP查询方案

问题1:如何在局域网内的其他机器上获取时间戳?

咱们分不同操作系统场景来解决,方法都很直接:

Windows环境

  • 先用net time命令拉取目标机器的时间字符串:
    net time \\192.168.0.2
    
    输出大概是\\192.168.0.2 的当前时间是 2024/5/20 14:30:00这样的格式。
  • 转换成Unix时间戳的话,用PowerShell一步到位最方便:
    (Get-Date (net time \\192.168.0.2 | Select-String -Pattern '\d{4}/\d{1,2}/\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}').Matches.Value).ToUniversalTime() - (Get-Date "1970-01-01").TotalSeconds
    
    执行后直接输出标准Unix时间戳。

Linux/Unix环境

  • 用rdate命令获取目标机器时间:
    rdate -p 192.168.0.2
    
  • 直接转成时间戳,搭配date命令就行:
    date -d "$(rdate -p 192.168.0.2)" +%s
    

跨平台通用方法(无需依赖系统命令)

很多系统默认开启了13端口的Daytime服务,咱们可以直接用TCP连接获取时间:

telnet 192.168.0.2 13

返回的格式类似20 MAY 2024 14:35:00 GMT,拿到这个字符串后,不管用什么语言都能轻松转成时间戳。


问题2:通过cmd命令net time 192.168.0.2 /set /y完成时间同步后,如何在本机使用PHP获取192.168.0.2的时间戳?

这里要注意:net time /set只是一次性同步本机和目标机器的时间,之后目标机器时间变动的话,本机不会自动跟着更新。所以如果要实时拿到目标机器的当前时间戳,不能直接用PHP的time()(那是本机时间),得主动去查目标机器,给你三个靠谱方案:

方案1:PHP调用系统命令解析net time输出

只要PHP的shell_exec没被禁用,且当前用户有权访问目标机器,就能这么干:

<?php
// 执行net time命令拉取目标机器时间
$rawOutput = shell_exec('net time \\192.168.0.2');
// 用正则匹配时间字符串
preg_match('/\d{4}\/\d{1,2}\/\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}/', $rawOutput, $timeMatches);

if (!empty($timeMatches[0])) {
    // 转成Unix时间戳,注意时区要和目标机器一致
    $targetTimestamp = strtotime($timeMatches[0]);
    echo "目标机器当前时间戳:{$targetTimestamp}";
} else {
    echo "获取失败,请检查网络连接或权限设置";
}
?>

方案2:PHP通过TCP连接13端口获取时间

这个方法不依赖系统命令,只要目标机器开了13端口的Daytime服务就可以:

<?php
$targetHost = '192.168.0.2';
$daytimePort = 13;

// 建立TCP连接,超时5秒
$socket = fsockopen($targetHost, $daytimePort, $errorNo, $errorMsg, 5);
if ($socket) {
    // 读取返回的时间字符串
    $timeString = trim(fgets($socket));
    fclose($socket);
    // 转成时间戳
    $targetTimestamp = strtotime($timeString);
    echo "目标机器当前时间戳:{$targetTimestamp}";
} else {
    echo "连接失败:{$errorMsg}(错误码:{$errorNo})";
}
?>

方案3:目标机器提供Web接口(最灵活)

如果目标机器也跑了Web服务,可以在上面写个超简单的PHP文件get_timestamp.php:

<?php
// 直接输出当前时间戳
echo time();
?>

然后本机PHP直接请求这个接口:

<?php
// 用file_get_contents或者curl都行
$targetTimestamp = file_get_contents('http://192.168.0.2/get_timestamp.php');
echo "目标机器当前时间戳:{$targetTimestamp}";
?>

这个方法的好处是不用管系统权限和端口,只要能访问Web服务就行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:50:44