你如何从今年的第n天到以下日期进入PHP:
getdatefromday(275, 2012)
并输出日期(如果是对象则更好)。
我也想做相反的事情,比如getdayoftheyear("21 oct 2012")
答案 0 :(得分:20)
这很简单。您应该阅读DateTime
对象的createFromFormat
静态方法here,date
函数here和strtotime
函数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)。
走另一条路需要一点创造力。