日期和时间的管理
在PHP中获取时间和日期
使用UNIX 时间戳
int mktime([int hour [, int minute[, int second[, int month
[, int day[, int year[, int is_dst]]]]]]]);
- 转变成UNIX时间戳
- is_dst表示该日期所示的时间是否是夏令时,如果是为1,否则为0,不知道可以设置为-1
- 无参数返回默认或当前时间
- 也可以使用如下函数
$timestamp = time();
// or
$timestamp = date("U");
getdate() 函数
array getdate([int timestamp])
使用checkdate() 函数检验日期有效性
int checkdate(int month, int day, int year);
格式化时间戳
string strftime(string $format[, int $timestamp]);
在PHP日期格式和MySQL日期格式之间进行转换
- 在SQL端进行转换
SELECT DATE_FORMAT(date_column, '%m %d %Y')
FROM tablename;
SELECT UNIX_TIMSTAMP(date_column)
FROM tablename;
在PHP中计算日期
$day = 18;
$month = 9;
$year = 1972;
$bdayunix = mktime(0, 0, 0, $month, $day, $year);
$nowunix = time();
$ageunix = $nowunix - $bdayunix;
$age = floor($ageunix/(365*24*60*60));
echo "Age is $age";
- floor() 取整处理
在MySQL 中计算日期
$day = 18;
$month = 9;
$year = 1972;
$bdayISO = date("c", mktime(0, 0, 0, $month, $day, $year));
$db = mysqli_connect('localhost', 'user', 'pass');
$res = mysqli_query($db, "SELECT datediff(now(), '$bdayISO')");
$age = mysqli_fectch_array($res);
echo "Age is ".floor($age[0]/365.25)
使用微秒
echo number_format(microtime(true), 10, '.', '');
- 参数为get_as_float 为true
使用日历函数
int gregoriantojd(int month, int day, int year)
string jdtojulian(int julianday)
$jd = gregoriantojd(9, 18, 1582);
echo jdtojulian($jd);