Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用PHP从internet获取日期和时间_Javascript_Php_Ajax_Html - Fatal编程技术网

Javascript 用PHP从internet获取日期和时间

Javascript 用PHP从internet获取日期和时间,javascript,php,ajax,html,Javascript,Php,Ajax,Html,我知道这类相关问题在这里被问过很多次。但我并没有找到我真正想要的解决方案 所以我的问题是,如何从互联网而不是本地计算机获取日期 在我的项目中,我有一个邮件通知模块。所以我需要正确的日期,即使节点本地计算机的日期和时间发生变化。程序必须与正确的日期进行比较。因此,我需要知道如何从互联网上获取日期,或者给我任何其他解决方案,以获得正确的日期和时间,即使计算机日期和时间发生变化。调用互联网上可用的免费API并获取时间 我发现最简单的方法是。您可以通过获取维也纳的当前时间戳 他们也有PHP的例子 $ti

我知道这类相关问题在这里被问过很多次。但我并没有找到我真正想要的解决方案

所以我的问题是,如何从互联网而不是本地计算机获取日期


在我的项目中,我有一个邮件通知模块。所以我需要正确的日期,即使节点本地计算机的日期和时间发生变化。程序必须与正确的日期进行比较。因此,我需要知道如何从互联网上获取日期,或者给我任何其他解决方案,以获得正确的日期和时间,即使计算机日期和时间发生变化。

调用互联网上可用的免费API并获取时间

我发现最简单的方法是。您可以通过获取维也纳的当前时间戳

他们也有PHP的例子

$timestamp = time();
$returnType = 'php';
$timezone = 'Vienna';
$requestUri = sprintf('http://www.convert-unix-time.com/api?timestamp=%s&timezone=%s&returnType=%s',
    $timestamp, $timezone, $returnType);

$response = file_get_contents($requestUri);
$result = unserialize($response);
var_dump($result);
另一个例子是API

调用将返回以下消息

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<geonames>
    <timezone tzversion="tzdata2017c">
    <countryCode>AT</countryCode>
    <countryName>Austria</countryName>
    <lat>47.01</lat>
    <lng>10.2</lng>
    <timezoneId>Europe/Vienna</timezoneId>
    <dstOffset>2.0</dstOffset>
    <gmtOffset>1.0</gmtOffset>
    <rawOffset>1.0</rawOffset>
    <time>2018-01-02 06:57</time>
<sunrise>2018-01-02 08:05</sunrise>
<sunset>2018-01-02 16:41</sunset>
</timezone>
</geonames>

如果您想获得默认时区,请使用这种方式

echo $date = date('m/d/Y h:i:s a', time());
如果您想设置时区,请使用日期\默认\时区\设置'您的\时区'


您可以在php中设置时区以获取特定区域date@NineBerry谢谢..您好@Ishan,如何设置国家代码和名称。以及如何从这个xml输出到php程序中获取详细信息。@avinash请不要检查更新的答案。不要用“hacks”来打扰自己。只需配置您的服务器,让它知道正确的时间,设置正确的时区,并完成它。php内置了各种各样的时髦datetime函数,如果您需要其他区域的时间,那么您所在的区域就可以了。此外,查询api需要时间,因此您永远无法获得正确的时间。这是一个本地时区。问题是“如何从Internet而不是本地计算机获取日期?”
date_default_timezone_set('Australia/Melbourne');
echo $date = date('m/d/Y h:i:s a', time());
date_default_timezone_set(" **PLACE NEEDED TIMEZONE HERE**");

/* Query a time server (C) 1999-09-29, Ralf D. Kloth (QRQ.software) <ralf at     qrq.de> */
function query_time_server ($timeserver, $socket)
{
    $fp = fsockopen($timeserver,$socket,$err,$errstr,5);
    # parameters: server, socket, error code, error text, timeout
    if($fp)
    {
        fputs($fp, "\n");
        $timevalue = fread($fp, 49);
        fclose($fp); # close the connection
    }
    else
    {
        $timevalue = " ";
    }

    $ret = array();
    $ret[] = $timevalue;
    $ret[] = $err;     # error code
    $ret[] = $errstr;  # error text
    return($ret);
}

function getCurrentDate($format = "d/m/Y H:i:s"){
    $timeserver = "ntp.pads.ufrj.br";
    $timercvd = query_time_server($timeserver, 37);
//if no error from query_time_server
    if(!$timercvd[1]) {
        $timevalue = bin2hex($timercvd[0]);
        $timevalue = abs(HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff'));
        $tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp
        return date($format, $tmestamp);
    }
    return null;
}

echo getCurrentDate();