這有效(注意個(gè)位數(shù)“.3”)$date = DateTime::createFromFormat("*-*-*.*.*-Y-m-d-H?i.*", "backup-bla-3.3.3-2019-08-23-21h16.7z");這失敗了(注意兩位數(shù)“.33”:$date = DateTime::createFromFormat("*-*-*.*.*-Y-m-d-H?i.*", "backup-bla-3.3.33-2019-08-23-21h16.7z");這對(duì)我來說毫無意義。為什么*在這種情況下不成功?以下內(nèi)容也適用于這個(gè)特定示例,但我無法使用它,因?yàn)榘姹咎?hào)可能有兩位數(shù)。$date = DateTime::createFromFormat("*-*-*.*.??-Y-m-d-H?i.*", "backup-bla-3.3.33-2019-08-23-21h16.7z");
1 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
*從手冊(cè)中可以清楚地看出為什么在使用時(shí)失敗:
隨機(jī)字節(jié)直到下一個(gè)分隔符或數(shù)字
你必須在連續(xù)兩個(gè)數(shù)字3,并3因此,當(dāng)它到達(dá)第二3你提供的格式不正確而導(dǎo)致錯(cuò)誤。
反之亦然**,??因?yàn)楫?dāng)你有一個(gè)數(shù)字時(shí),第二個(gè)*和?匹配的第二個(gè)字符就沒有了。
我看不到使用可用格式字符的任何方法。您的解決方案似乎正在修改該值以在年份之前刪除任何內(nèi)容,然后使用Datetime:createFromFormat().
$parts = preg_split('/(?=\d{4})/', 'backup-bla-3.3.3-2019-08-23-21h16.7z', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
$date = DateTime::createFromFormat("Y-m-d-H?i.*", $parts[1]);
echo $date->format('c');
- 1 回答
- 0 關(guān)注
- 211 瀏覽
添加回答
舉報(bào)
0/150
提交
取消