当我从网站检索天气结果时,日期和时间将以字符串形式显示。例如,“日期”:“星期四,2016年6月16日上午09:00 SGT”
我想提取
时间(09:00)以便可以TIME()格式插入数据库(hh:mm:ss)
日期(2016年6月16日星期四),以便在插入数据库之前将其转换为yyyy-mm-dd。我根本不需要这一天。
//连接到mysql db
$ con = mysql_connect(“127.0.0.1”,“admin”,“password”)或死亡('无法连接:'。mysql_error());
//连接到天气数据库
mysql_select_db(“weather”,$ con);
date_default_timezone_set( '亚/新加坡'); //date.timezone =“ETC // GMT-8”
//阅读json文件内容
$ jsondata = file_get_contents('weather.json');
//将json对象转换为php关联数组
$ data = json_decode($ jsondata,true);
这是我的代码来识别这一天:
$day=array();
$day[0]="mon";
$day[1]="tue";
$day[2]="wed";
$day[3]="thurs";
$day[4]="fri";
$day[5]="sat";
$day[6]="sun";
//以yyyy-mm-dd
的格式检索日期$date = $data['query']['results']['channel']['item']['condition']['date'];
$newdatefront = str_replace($day, '', $date);
$newdateback = substr_replace($newdatefront, '', 12,30);
$dateformat = date('Y-m-d', strtotime(str_replace('-', '/', $newdateback)));
//检索要插入db
的时间(09:00)$time = $data['query']['results']['channel']['item']['condition']['date'];
$newtimefront = substr_replace($date,'',0,17);
$newtimeback = str_replace(' SGT','',$newtimefront);
$timeformat = str_replace('AM','',$newtimeback);
weather.json(结果是从网站中提取后的结果)
{
"query": {
"count": 1,
"created": "2016-06-16T02:07:59Z",
"lang": "en-US",
"results": {
"channel": {
"item": {
"condition": {
"code": "4",
"date": "Thu, 16 Jun 2016 09:00 AM SGT",
"temp": "81",
"text": "Thunderstorms"
}
}
}
}
}
}
然而,当我尝试运行代码时,它会提示我“错误:错误的时间值:'09:00 AM'代表第1行的'时间'
Time是我数据库中列的名称,到目前为止我只有1条记录。
答案 0 :(得分:-1)
您需要设置时区并使用strtotime和日期。
date_default_timezone_set("Asia/Singapore");
$str = 'Thu, 16 Jun 2016 09:00 AM SGT';
echo date("h:i", strtotime($str)); //09:00
echo '<br/>';
echo date("D, d M, Y", strtotime($str)); //Thu, 16 jun, 2016
<强>更新强>
date_default_timezone_set("Asia/Singapore");
$date = $data['query']['results']['channel']['item']['condition']['date'];//Thu, 16 Jun 2016 09:00 AM SGT
echo $NewTime = date("h:i", strtotime($date )); //09:00
echo $NewDate = date("D, d M, Y", strtotime($date )); //Thu, 16 jun, 2016
这可能会对你有所帮助。让我知道。