0

PHP (Ubuntu / PHP 5.2.4) で SQL Server (MSSQL) 列をクエリすると、日付列は次のようになります。

2013 年 5 月 16 日 12:00:00:000AM

strtotime はそれらを解析しません。

これを試しました:

preg_match("/^([a-zA-Z]{3}) ([0-9]{1,2}) ([0-9]{4}) ([0-9]{2}):([0-9]{2}):([0-9]{2}):[0-9]{3}([apmAPM]{2})$/",$time_string,$regs);
$month = $regs[1];
$day = $regs[2];
$year = $regs[3];
$hour = $regs[4];
$minute = $regs[5];
$second = $regs[6];
$ampm = $regs[7];
$converted_time_string = $month." ".$day." ".$year." ".$hour.":".$minute.":".$second.$ampm;

$actual_time = strtotime($converted_time_string);

return $actual_time;

ただし、一部の日付で問題が発生しています。たとえば、次のようになります。

2013 年 8 月 1 日 12:00:00:000AM

これを行う方法について、より信頼できる提案はありますか? 現時点では、PHP のアップグレードはオプションではありません。

4

2 に答える 2

3

SELECT ... CONVERT(VARCHAR(19), dateColumn, 120) ...(24h)形式で日付を選択することをお勧めしますYYYY-MM-DD HH:MM:SS-これにより、損失のない変換が保証されますstrtotime()

于 2013-05-31T07:54:43.817 に答える
0

date_parse_from_format関連する配列に解析できる可能性があります。この配列を使用して、新しいタイムストリングを作成できます。

http://www.php.net/manual/en/function.date-parse-from-format.php

于 2013-05-31T07:54:28.737 に答える