2012-09-07 65 views
0

我试图创建一个准确的Unix时间戳来分配给一个变量,基于不同的时间段。任何想法如何计算这些时间戳的时间?PHP - 准确的Unix时间戳

+1

“时间戳”将指示一个时刻。当你说你想要一个“本月”的时间戳时,你是否想要在当前月份的开始时间(本月的第一天的午夜)或两个时间戳记指示月份的开始和结束边界或者是什么?请澄清。 – Celada

+0

@Celada,是的,时间戳是计算边界。所以它应该是本月的开始。 – Wonka

+0

http://www.php.net/manual/en/book.datetime.php – Herbert

回答

3

我只能建议你阅读时间手册。

http://php.net/manual/en/function.time.php

今天,去年午夜 - >获取时间+分,做一个减24:00小时计算,可使用http://php.net/manual/en/function.abs.php让你的价值正

所有的人都是可以解决的,通过使用http://php.net/manual/en/function.strtotime.php

在最糟糕的情况下,将其转换为unix时间并获得差异,您将获得精确的输出,而不必关注您提到的闰年和其他时间条件,如28/29 feb问题。

0

我可以说你不想这样做吗?存储常规的Unix时间戳 - 如果需要,可以将转换转换为本地时间戳。

当时区变化或有人移动夏令时时,数据真正流畅,速度非常快。根据您需要数据的准确度,闰秒(甚至闰秒)是可能的。

时间处理代码非常复杂和/非常/智能。

  • 存储实时戳。
  • 存储标记该时期开始的时间戳。
  • 当你需要的时候减去。
  • 避免晦涩的错误。
0

我是PHP的DateTime classes的大支持者。他们减轻了处理时间时产生的许多挫折。

此示例说明如何使用它。

<?php 

header('Content-type: text/plain'); 

$today = new DateTime("today"); 
echo 'Today: ' . $today->format('Y-m-d H:i:s') . "\n"; 
echo 'Timestamp: ' . $today->getTimestamp() . "\n\n"; 

$thisweek = new DateTime("this week"); 
echo 'This Week: ' . $thisweek->format('Y-m-d') . "\n"; 
echo 'Timestamp: ' . $thisweek->getTimestamp() . "\n\n"; 

$thismonth = new DateTime("this month"); 
echo 'This Month: ' . $thismonth->format('Y-m') . "\n"; 
echo "Days this month: ", $thismonth->format('t') . "\n"; 
echo 'Timestamp: ' . $thismonth->getTimestamp() . "\n\n"; 

?> 

您可以通过使用DateTimeZone类来增强它。