を考えると、以下の文字列:PHP:Unixのタイムスタンプに日付文字列を変換
- 01/01/11
- 1/1/11
- 2011年1月1日
- 1月1日/私はトンを変換するにはどうすればよい2011
- 2011年1月1日
- など
Unixのタイムスタンプを参照してください。ほとんどの場合、これはさまざまな区切り文字を持つdd mm yyyy
の形式になります。
を考えると、以下の文字列:PHP:Unixのタイムスタンプに日付文字列を変換
Unixのタイムスタンプを参照してください。ほとんどの場合、これはさまざまな区切り文字を持つdd mm yyyy
の形式になります。
strtotime
,strptime
またはDateTime
クラスをご覧ください。
strtotime
例:
$timestamp = strtotime('1/1/2011');
各関数は、それは警告のしています。 (セパレータ スラッシュである場合:M/D/YまたはDMY形式で
日付が は、様々な構成要素間 セパレータを見て非曖昧化された:例えば、
strtotime
のドキュメントは、と述べています/)、アメリカのm/d/yは と仮定される。区切り記号が ダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y形式 とみなされます。
preg_match
を使用して、3つの部分すべてをキャプチャし、mktime
を使用して独自のタイムスタンプを作成することもできます。
preg_match
例:
if (preg_match('/^(?P<day>\d+)[-\/](?P<month>\d+)[-\/](?P<year>\d+)$/', '1/1/2011', $matches))
{
$timestamp = mktime(0, 0, 0, ($matches['month'] - 1), $matches['day'], $matches['year']);
}
おそらくstrtotime functionを探しています。
しかし、慎重に考えれば、すべての文字列を日付時刻まで曖昧さなく解析することは非常に難しいため、それぞれの可能な文字列形式をunixタイムスタンプ(エポック)に変換します。
$to='23.1.2014-18:16:35'
list($part1,$part2) = explode('-', $to);
list($day, $month, $year) = explode('.', $part1);
list($hours, $minutes,$seconds) = explode(':', $part2);
$timeto = mktime($hours, $minutes, $seconds, $month, $day, $year);
echo $timeto;
あなたの正規表現はdd-mm-yyyy形式を前提としていますが、それはわかりません。 – StackOverflowNewbie
@StackOverflowNewbie - あなたの質問は次のように述べています。「ほとんどの場合、これはさまざまな区切り文字でdd mm yyyyの形式になります。だから、私はそのフォーマットを使いましたが、別のフォーマットをチェックして、 'regex'をより具体的にするオリジナルのものに' elseif'文を追加することができます(つまり、\ d +の代わりに0-12を月と0 -31日)。もちろん、1/2/13の場合は、フォーマットを知らないとどちらがどちらであるかを知ることは不可能です。 –