第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP - 接受輸入和輸出日期的各種日期格式

PHP - 接受輸入和輸出日期的各種日期格式

PHP
蕪湖不蕪 2022-01-02 14:41:16
我有一個巨大的 excel 文件,我正在導(dǎo)入并存儲到日期字段(日期(“Ymd”))。問題是,輸入有幾種不同的格式,例如:1) 2015/01/01 // valid format, php converts this to yyyy-mm-dd2) 2015-01 // supposed to be 2015-01-013) jan/18 // supposed to be 2018-01-01如您所見,雖然大多數(shù)以有效格式提供,但(大部分)使用了另外兩種格式,即“年-月”和“月/年”。一切都表示 strtotime,下面應(yīng)該工作 - 但是我將如何表示當月的“第一天”沒有提供日期(因為否則它最終會為除(1)之外的所有內(nèi)容都為空,如果我的理解是正確的)?//assumes $str is one of the above mentioned formatsif (($timestamp = strtotime($str)) === false) {    $date = null;} else {    $date = date('Y-m-d', $timestamp);}
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

您可以根據(jù)輸入日期字符串的長度創(chuàng)建格式函數(shù)。


$formats = [

    10 => function($string) { return date_create_from_format('Y/m/d', $string); },

    7 => function($string) { return date_create_from_format('Y-m j', $string . ' 1'); },

    6 => function($string) { return date_create_from_format('M/y j', $string . ' 1'); }

];

然后使用這些函數(shù)創(chuàng)建您的日期


$date = $formats[strlen($a_date_string)]($a_date_string);

我將 1 附加到格式函數(shù)中的字符串以將日期設(shè)置為該月的第一天。


查看完整回答
反對 回復(fù) 2022-01-02
?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

您可以創(chuàng)建一個與此類似的腳本并多次運行它并對其進行調(diào)整,直到獲得所有日期格式。


// should be listed from more specific to least specific date format

$dateFormats = [

    'Y/m/d' => ['midnight'],

    'Y-m'   => ['midnight', 'first day of this month'],

    'M/y'   => ['midnight', 'first day of this month'],

];


$dates = [

    '2015/01/01',

    '2015-01',

    'jan/18',

];


foreach ($dates as $date) {

    if ($dateTime = getDateTimeFrom($date, $dateFormats)) {

        echo "{$dateTime->format('Y-m-d H:i:s')} \n";

    } else {

        echo "Unknown date format : {$date} \n";

    }

}



function getDateTimeFrom(string $dateString, array $dateFormats) : ?\DateTime {

    if (!$dateString) {

        return null;

    }


    foreach ($dateFormats as $format => $modifiers) {

        if ($dateTime = \DateTime::createFromFormat($format, $dateString)) {

            foreach ($modifiers as $modification) {

                $dateTime->modify($modification);

            }


            return $dateTime;

        }

    }


    return null;

}


// Outputs:

// 2015-01-01 00:00:00 

// 2015-01-01 00:00:00 

// 2018-01-01 00:00:00 


查看完整回答
反對 回復(fù) 2022-01-02
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號