11/08/2018, 20:43

strtotime note

Hàm strtotime của PHP có đặc điểm: Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y ...

Hàm strtotime của PHP có đặc điểm:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

Nghĩa là:

  • Nếu bạn nếu bạn có một chuỗi theo thứ tự ngày, tháng, năm thì nên đặt dấu '-' ở giữa. VD: '25-03-2015'
  • Ngược lại nếu bạn có tháng, ngày, năm thì nên đặt dấu '/' ở giữa. VD: '04/24/1992'

Có thể dùng hàm str_replace để thay đổi giữa 2 kí tự '-''/'

#Test datetime formating with dash 
$timeWithDash = "25-03-1992";
$timeWithDashError = "03-25-1992";

#sucess formating
var_dump(strtotime($timeWithDash));
//output: int 701481600
#error formating return boolean false as result
var_dump(strtotime($timeWithDashError));
//output: boolean false

#Fix error with strtotime European format
$timeWithDashFix = str_replace('-', '/', $timeWithDashError);
var_dump($timeWithDashFix);
//output: string '03/25/1992' (length=10)
var_dump(strtotime($timeWithDashFix));
//output: int 701481600

#Test datetime formating with slash 
$timeWithSlash = "04/19/1992";
$timeWithSlashError = "19/04/1992";

#sucess formating
var_dump(strtotime($timeWithSlash));
//output: int 703641600
#error formating return boolean false as result
var_dump(strtotime($timeWithSlashError));
//output: boolean false

#Fix error with strtotime American format
$timeWithSlashFix = str_replace('/', '-', $timeWithDashError);
var_dump($timeWithSlashFix);
//output: string '03-25-1992' (length=10)
var_dump(strtotime($timeWithSlashFix));
//output: int 703641600
0