全方位站长技能、SEO优化学习平台
免费香港宝塔虚拟主机 免费香港Kangle虚拟主机
当前位置:网站首页 > 站长笔记 > 正文

文煞云主机网挂机宝系统时间错误解决方案,自动更新自定义时间bat脚本

作者:文煞发布时间:2025-10-14分类:站长笔记浏览:481


温馨提示:手机扫码可阅读当前文章!
文章简介:最近需要使用挂机宝挂一个需要稳定在线的收钱快报软件,目的是监控支付宝的收款信息,然后回调给支付网站,及时处理业务。但是一切设置妥当以后,发现不回调,不应该是回调了,但是在几分钟以后。我觉得很纳闷,然后各种折腾也没有能解决,无意间发现挂机宝的...

最近需要使用挂机宝挂一个需要稳定在线的收钱快报软件,目的是监控支付宝的收款信息,然后回调给支付网站,及时处理业务。但是一切设置妥当以后,发现不回调,不应该是回调了,但是在几分钟以后。我觉得很纳闷,然后各种折腾也没有能解决,无意间发现挂机宝的系统时间与真实时间竟然相差了4分钟,导致收钱快报软件在四分钟以后才收到支付宝的支付信息,才处理回调信息。

好问题找到了,那就去解决,系统时间不对,我最先想到的办法就是同步网络时间,点击挂机宝右下角的时间==》点击日期和时间设置==》更改时区:选择(UTC+08:00)北京、重庆、香港特别行政区、乌鲁木齐==》点击设置界面的internet时间==》更改设置界面选择与internet时间服务器同步==》选择time.windows.com-》确定=》应用。大部分电脑到此一部,时间不正确的问题在这里就算解决了,(我这里使用的系统是挂机宝的系统,Windows Server 2008 R2,不管你的什么系统,设置方法都大同小异。)但是挂机宝的时间还是一样不对,还是差了4分钟。具体原因是什么,我不得知道,但是这个问题也不是不能解决。

文煞云主机网挂机宝系统时间错误解决方案,自动更新自定义时间bat脚本  第1张

文煞云主机网挂机宝系统时间错误解决方案,自动更新自定义时间bat脚本  第2张

既然更新时间服务器同步会差4分钟,那我就取消与internet时间服务器同步,手动修改时间,在原来的基础上增加4分钟,好问题解决。收钱快报的回调正常了,但是新的问题也出现了,每次重启挂机宝以后,时间又会被打回原型,依旧差了4分钟。

既然知道问题所在没解决起来就容易多了,我就写了一个脚本,目的是从自定义服务器获取时间,然后修改挂机宝的系统时间,在设置计划任务,定时执行即可!

自动更新自定义时间bat脚本(建议计划任务里的重复时间为1小时执行一次,新增触发条件系统启动执行):

@echo off
setlocal enabledelayedexpansion
echo ================= 1. 获取远程JSON原始数据 =================
:: 记录开始时间
for /f "tokens=1-3 delims=:." %%a in ("%time%") do (
    set /a start_hour=%%a, start_min=%%b, start_sec=%%c
)
echo 开始获取远程时间...
powershell -Command "$client = New-Object System.Net.WebClient; $json = $client.DownloadString('http://bbs.wenshay.cn/api/time.php'); Write-Host '原始JSON数据:'; Write-Host $json; $json | Out-File -FilePath 'temp_json.txt' -Encoding utf8"
if not exist "temp_json.txt" (
    echo 错误:API获取数据失败,请检查网络或API地址!
    pause
    exit /b 1
)
:: 记录结束时间
for /f "tokens=1-3 delims=:." %%a in ("%time%") do (
    set /a end_hour=%%a, end_min=%%b, end_sec=%%c
)
:: 计算网络延迟(秒)
set /a network_delay=(end_hour-start_hour)*3600 + (end_min-start_min)*60 + (end_sec-start_sec)
if !network_delay! lss 0 set /a network_delay+=86400  :: 处理跨午夜情况
echo 网络延迟:!network_delay!秒
echo.
echo ================= 2. 解析时间戳并转换(含时区修正和网络延迟补偿) =================
:: 提取timestamp字段
set "timestamp="
for /f "tokens=2 delims=:," %%i in ('type temp_json.txt ^| findstr /i "timestamp"') do (
    set "timestamp=%%i"
)
:: 清理空格、引号和逗号
set "timestamp=!timestamp: =!"
set "timestamp=!timestamp:"=!"
set "timestamp=!timestamp:,=!"
if "!timestamp!"=="" (
    echo 错误:无法解析时间戳!
    goto :use_datetime_fallback
)
echo 解析到的时间戳:!timestamp!
:: 转换为北京时间(UTC+8)并补偿网络延迟
set /a beijing_timestamp=!timestamp!+28800+network_delay
:: 使用PowerShell将Unix时间戳转换为系统时间格式
set "converted="
for /f "delims=" %%a in ('powershell -Command "[System.DateTime]::Parse('1970-01-01 00:00:00').AddSeconds(!beijing_timestamp!).ToString('yyyy-MM-dd HH:mm:ss')" 2^>nul') do (
    set "converted=%%a"
)
if "!converted!"=="" (
    echo PowerShell转换失败,尝试备用方法...
    goto :use_datetime_fallback
)
:: 拆分日期和时间
set "remoteDate=!converted:~0,10!"
set "remoteClock=!converted:~11,8!"
:: 使用YYYY-MM-DD日期格式
set "sysDate=!remoteDate!"
set "sysTime=!remoteClock!"
echo 转换后的日期:!sysDate!
echo 转换后的时间:!sysTime!
goto :update_time
:use_datetime_fallback
echo.
echo ===== 使用datetime字段作为备用方案 =====
:: 提取datetime字段
set "datetime_str="
for /f "tokens=2 delims=:," %%i in ('type temp_json.txt ^| findstr /i "datetime"') do (
    set "datetime_str=%%i"
)
:: 清理引号和空格
set "datetime_str=!datetime_str:"=!"
set "datetime_str=!datetime_str: =!"
:: 拆分并转换格式
set "sysDate=!datetime_str:~0,10!"  :: 直接使用 YYYY-MM-DD 格式
set "sysTime=!datetime_str:~11,8!"
echo 从datetime解析的日期:!sysDate!
echo 从datetime解析的时间:!sysTime!
:update_time
:: 清理临时文件
if exist "temp_json.txt" del temp_json.txt
echo.
echo ================= 3. 执行系统时间更新 =================
:: 更新系统日期
echo 正在更新系统日期为:!sysDate!
date !sysDate! >nul 2>&1
if !errorlevel! neq 0 (
    echo 警告:日期更新失败,可能需要管理员权限!
) else (
    echo 日期更新成功!
)
:: 更新系统时间
echo 正在更新系统时间为:!sysTime!
time !sysTime! >nul 2>&1
if !errorlevel! neq 0 (
    echo 警告:时间更新失败,可能需要管理员权限!
) else (
    echo 时间更新成功!
)
echo.
echo ================= 4. 验证时间设置 =================
echo 当前系统时间:
echo 日期: %date%
echo 时间: %time%
echo.
echo 时间更新流程完成!窗口将在3秒后自动关闭...
ping -n 3 127.0.0.1 >nul
exit /b 0


欢迎您,来自美国的朋友,您的IP:216.73.216.136,您的网络:


站长笔记排行
随机推荐
猜你喜欢

服务热线

1888888888

要发发发发发发

站长微信公众号

站长微信公众号

分享:

支付宝

微信