Php如何从一年中的日期到现在,反之亦然

时间:2012-03-16 10:23:58

标签: php date

你如何从今年的第n天到以下日期进入PHP:

getdatefromday(275, 2012) 

并输出日期(如果是对象则更好)。

我也想做相反的事情,比如getdayoftheyear("21 oct 2012")

8 个答案:

答案 0 :(得分:20)

这很简单。您应该阅读DateTime对象的createFromFormat静态方法heredate函数herestrtotime函数here

// This should get you a DateTime object from the date and year.
function getDateFromDay($dayOfYear, $year) {
  $date = DateTime::createFromFormat('z Y', strval($dayOfYear) . ' ' . strval($year));
  return $date;
}

// This should get you the day of the year and the year in a string.
date('z Y', strtotime('21 oct 2012'));

答案 1 :(得分:3)

尝试(从0开始的日期不是1):

$date = DateTime::createFromFormat( 'Y z' , '2012 275');
var_dump($date);

那:

echo date('z', strtotime('21 oct 2012'));

答案 2 :(得分:2)

$todayid = date("z");  // to get today's day of year

function dayofyear2date( $tDay, $tFormat = 'd-m-Y' ) {
$day = intval( $tDay );
$day = ( $day == 0 ) ? $day : $day - 1;
$offset = intval( intval( $tDay ) * 86400 );
$str = date( $tFormat, strtotime( 'Jan 1, ' . date( 'Y' ) ) + $offset );
return( $str );
}

echo dayofyear2date($todayid);
一年中的某一天

答案 3 :(得分:1)

我知道它有点陈旧,答案已被接受,但我想在此处设置另一种方法,尝试使用问题所有者所需的确切格式:

// This gets the day of the year number
// given a formatted date string like
// "21 oct 2012"
function getdayoftheyear($dateString) {
  date('z', strtotime($dateString));
}

相反:

// This gets the date formatted in $dateFormat way
// like "Y-m-d"
// given the $dayOfTheYear and the $year in numeric form
function getdatefromday($dateFormat, $dayOfTheYear, $year) {
  date($dateFormat, mktime(0, 0, 0, 1, ($dayOfTheYear + 1), $year));
}

第二个函数使用mktime()的一个特性,允许在参数列表中设置任何数字,因为它管理溢出,找到正确的月份。 因此,如果你调用mktime(0,0,0,1,32,2015),它实际上知道第一个月的第32天是2dn月的第一天,依此类推。

答案 4 :(得分:0)

您可以使用strtotime()获取年份值(http://de2.php.net/manual/en/function.strtotime.php)的秒数。比天数(秒* 24 * 60 * 60)。现在,您可以将此值与date()一起使用(请参阅第一个答案)

答案 5 :(得分:0)

function DayToTimestamp($day, $year = null)
{
    isset($year) or $year = date('Y');
    return strtotime("1 Jan $year +$day day");
}

答案 6 :(得分:0)

function getDateFromDayOfYear($dayOfYear,$year){
    return date('Y-m-d', strtotime('January 1st '.$year.' +'.$dayOfYear.' days'));
}

答案 7 :(得分:-1)

轻松获得一年中的这一天。只需使用带有正确参数的日期函数documented in the manual(它在1月1日返回0,在闰年时为12月31日返回365)。

走另一条路需要一点创造力。