关于php中的日期\格式
我使用的是PHP5.5.15版本,并使用Xampp运行PHP(在我本地的windows机器上) 我对变量$time有问题$date和$date2正在工作 代码如下:关于php中的日期\格式,php,csv,date-format,Php,Csv,Date Format,我使用的是PHP5.5.15版本,并使用Xampp运行PHP(在我本地的windows机器上) 我对变量$time有问题$date和$date2正在工作 代码如下: <?php //include_once('connect.php') function currencyquote() { $from = 'EUR'; $to = 'USD'; $url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=s
<?php
//include_once('connect.php')
function currencyquote() {
$from = 'EUR';
$to = 'USD';
$url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s='.$from .$to .'=X';
$handle = @fopen($url,'r');
if($handle) {
$result = fgets($handle, 4096);
fclose($handle);
}
$allData = explode(',',$result);
$date = $allData[2]; //ex.: "2/18/2015"
$time = $allData[3]; //ex.: "1:48pm" -> New York local time
$close = $allData[1]; // ex.: 1.3151
echo 'the $result = ' . $result .'<br />';
echo 'the $time = ' .$time. '<br />';
$date2 = date_create_from_format("h:ia","01:50pm");
echo 'the $date2 = ' . date_format($date2, "H:i:s") . "<br />";
$date3 = "01:50pm";
$date=date_create_from_format("h:ia",$date3);
echo 'the $date = ' . date_format($date,"H:i:s") . "<br />";
// this is what i want to use :
$time1 = date_create_from_format("h:ia", $time);
echo 'the $time1 = ' . date_format($time1,"H:i:s") . "<br /><br />"; // this line is line 30 of the code
//with strtotime:
echo 'using \'date\' = ' . date("h:i:s", strtotime($allData[3])) . "<br />";
echo 'using \'date()\': '.date('H:i:s', strtotime($time));
}
currencyquote();
?>
您收到的消息很可能意味着
$time1
设置为false
。原因应该是date\u create\u from\u format()
无法将日期格式h:is
与您提供的变量$time
匹配
再往上走,你有
$time = $allData[3]; //ex.: "1:48pm"
我试着改成$time='1:48pm'代码>,这非常有效。这意味着你不能从csv中获得你认为是的数据
我尝试下载与您相同的文件,但得到了以下结果:
"EURUSD=X",1.1371,"2/19/2015","7:50am"
这就是它不工作的原因-$time
被设置为带有尾随换行符的“7:50am”
,而不是7:50am
。删除双引号(例如,$time=trim(str_replace(“”,“,”$time));
你应该很好。:)首先:
对于CSV读取,请使用fgetcsv()函数,这样您就不必从CSV输出中过滤引号,也无需执行explode()
第二:
您应该仔细地过滤date\u create\u from\u format函数的输入字符串
例如:
$time = trim(str_replace("\"","", $time)); // you will get something like 7:20am
然后:
$time1 = date_create_from_format("G:ia", $time); // G - for 24-hour format without leading zeroes in your case
但无论如何都要使用第一个解决方案(fgetcsv()
$time1 = date_create_from_format("G:ia", $time);
$time = trim(str_replace("\"","", $time)); // you will get something like 7:20am
$time1 = date_create_from_format("G:ia", $time); // G - for 24-hour format without leading zeroes in your case