使用substr_replace和str_replace从要插入到db中的输入中检索特定格式的日期和时间

时间:2016-06-16 06:55:05

标签: php mysql datetime

当我从网站检索天气结果时,日期和时间将以字符串形式显示。例如,“日期”:“星期四,2016年6月16日上午09:00 SGT”

我想提取

  1. 时间(09:00)以便可以TIME()格式插入数据库(hh:mm:ss)

  2. 日期(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);

  3. 这是我的代码来识别这一天:

    $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条记录。

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

这可能会对你有所帮助。让我知道。