2016-06-16 45 views
0

當我從網站檢索天氣結果時,日期和時間將以字符串形式顯示。對於例如, 「日期」: 「星期四,2016年6月16日上午09時00 SGT」使用substr_replace和str_replace從要插入到db的輸入中檢索特定格式的日期和時間

我要提取的

  1. 時間(09:00),以便它能夠被插入到在TIME()格式的分貝(HH:MM:SS)

  2. 日期(星期四,2016年6月16日),以便它可以插入到分貝之前被轉換成YYYY-MM-DD。我根本不需要那一天。

    //連接到MySQL分貝

    $ CON =的mysql_connect( 「127.0.0.1」, 「管理員」, 「密碼」)或死亡( '無法連接:' mysql_error());

    //連接到氣象數據庫

    mysql_select_db( 「天氣」,$ CON); ('Asia/Singapore');

    date_default_timezone_set('Asia/Singapore'); //date.timezone = 「ETC // GMT-8」

    //讀取JSON文件內容

    $ jsondata =的file_get_contents( 'weather.json');

    //轉換JSON對象到PHP關聯數組

    $數據= 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))); 

//檢索時間日期(09:00)要插入db

$time = $data['query']['results']['channel']['item']['condition']['date']; 
$newtimefront = substr_replace($date,'',0,17); 
$newtimeback = str_replace(' SGT','',$newtimefront); 
$timeformat = str_replace('AM','',$newtimeback); 

我們ather.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'列'時間'

時間是我的數據庫中的列的名稱,迄今爲止我只有1條記錄。

+1

爲什麼'substr_replace'和'str_replace' ???使用日期時間和格式來獲取轉換後的拆分日期和時間。 –

+0

如果你有PHP 5.3+(你應該)閱讀如何在這裏使用'DateTime :: createFromFormat' https://secure.php.net/manual/en/datetime.createfromformat.php – techouse

回答

-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 

這可能會幫助你。讓我知道。

+0

$ date = $ data ['查詢 '] [' 結果 '] [' 通道 '] [' 項目 '] [' 狀態 '] [' 日期']; \t $ Newdate =(「h:i」,strtotime($ date)); \t \t \t $ time = $ data ['query'] ['results'] ['channel'] ['item'] ['condition'] ['date']; \t $ Newtime = date(「D,d M,Y」,strtotime($ time)); 我已經添加了,但它提示錯誤,說有一個意外,在「\t $ Newdate =(」h:i「,strtotime($ date));」 – plzhelp

+0

另外,我編輯了我的問題! – plzhelp

+0

你錯過了在檢索'$ Newdate'時使用'date(..)'。 –

相關問題