今日は、データベース内の指定された文字列から日付と時刻を抽出し、一致する時刻形式が 2012-02-16 または 2012 であるタイムスタンプを変換する必要があります。 -02-16 23: 59:59の前が0の場合は書く必要はありません。後でテストコードを見つけました
コードは以下に掲載されています
コードは次のとおりです |
コードをコピー |
//一致する時刻の形式は、2012-02-16 または 2012-02-16 23:59:59 で、先頭が 0 の場合は記述する必要はありません
$time = "2012-02-16 23:59:59";
$patten = "/^d{4}[-](0?[1-9]|1[012])[-](0?[1-9]|[12][0-9]|3[ 01])(s+(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]): (0?[0-9]|[1-5][0-9]))?$/";
if (preg_match ( $patten, $time )) {
echo $timestro = strtotime ( $time );
} その他 {
エコー「エラー」;
}
?>
|
この規則の分析:
コードは次のとおりです |
コードをコピー |
/^d{4}[-](0?[1-9]|1[012])[-](0?[1-9]|[12][0-9]|3[01]) (s+(0?[0-9]|[12][0-3]):(0?[0-9]|[1-5][1-9]):(0?[0-9] |[1-5][1-9]))?$/
|
/ は式の開始記号であり、最後の / は式の終了記号です
^***で始まる文字列の先頭
$ は文字列の終わりを表し、終わりに達したことを意味します
| または
を意味します
()内は単位を表します
d{4} は 4 桁の数字に一致します。
(-) は「-」記号と一致します。
(0?[1-9]|1[012]) は月と一致します。
(0?[1-9]|[12][0-9]|3[01]) は曜日と一致します。
(s+(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9]):(0 ?[0-9]|[1-5][0-9]))?
マッチング時間全体の分と秒の部分は、「はい」または「いいえ」を意味します。
最後のステップは、成功した一致のタイムスタンプを変換することです
現在の変換結果は次のとおりです: 1329407999
私が自分で書いた例を添付します
コードは次のとおりです |
コードをコピー |
<前>
$str="こんにちは 2010/07/08 12:31:56はは 1999/12/31 13:21:45";
$str2="こんにちは 2010-07-08 12:31:56 はは 1999-12-31 13:21:45";
//日付のみ一致します
preg_match_all("/d{4}/d{2}/d{2}/", $str, $arr);
preg_match_all("/d{4}-d{2}-d{2}/", $str2, $arr2);
//日時を一致させる
preg_match_all("/d{4}/d{2}/d{2}sd{2}:d{2}:d{2}/", $str, $arr3);
preg_match_all("/d{4}-d{2}-d{2}sd{2}:d{2}:d{2}/", $str2, $arr4);
echo '一致日 ';
print_r($arr);
print_r($arr2);
echo '日付と時刻を一致 ';
print_r($arr3);
print_r($arr4);
?>
|
http://www.bkjia.com/PHPjc/631254.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631254.html技術記事今日はデータベースを置き換えたいと考えています。データベース内の指定された文字列から日付と時刻を抽出し、タイムスタンプを変換する必要があります。一致する時刻の形式は 2012-02-16 です。 .