改变今年的日期

时间:2014-11-02 11:53:26

标签: javascript php jquery date date-format

如果我只知道日期为数字,我如何找到今年的日期......

让我们说如果我知道那天是'1'然后到2014年1月1日,如果我知道那天是'32'然后到01.02.2014?

可以在javascript中使用吗?

php怎么样?

6 个答案:

答案 0 :(得分:1)

试试这个:

var date = new Date("" + new Date().getFullYear() );
var day = 32;

date.setDate(date.getDate() + day-1);

console.log(date); // => Sat Feb 01 2014 ...

答案 1 :(得分:1)

在JavaScript中,您只需创建一个新的Date对象,并将days参数设置为您所需的年份,即可执行此操作 - 请参阅MDN上的参数说明部分:

var dayInYear = 32;
var newDate = new Date(2014, 0, dayInYear);
// newDate is 01 Feb.

或者如果您有一个现有的Date对象:

var theDate = new Date('01/01/2014');
var dayInYear = 32;
var newDate = new Date(theDate.getFullYear(), theDate.getMonth(), dayInYear);

答案 2 :(得分:1)

在阅读完您的问题之后,您可能希望为该功能提供日期和年份以获取特定日期。

function getDateFromDay( year, day) {
     return new Date((new Date(year, 0)).setDate(day));
}

getDateFromDay(2014, 1); // will give Wed Jan 01 2014 00:00:00

答案 3 :(得分:1)

PHP方式:

$first_day_of_this_year = strtotime( date( 'Y-01-01 00:00:00' ) ); //as unix timestamp
$after_32_days = $first_day_of_this_year + 32 * 24 * 60 * 60;
echo date( "Y-m-d", $after_32_days );

这将输出2014-02-02

这将始终适用于当年。如果您想将其用于其他年份,只需将第一个日期()函数中的Y替换为所需的年份。

这应该与闰年一起正常工作。

修改

我做了一个功能:

function day_number_to_date( $day_in_year, $year = null ) {
    $year = ( is_null( $year ) ) ? date("Y") : $year; //use current year if it was not passed to function
    $first_day_of_year = strtotime( date( "$year-01-01 00:00:00" ) ); //first day of year as unix timestamp
    $days_to_add = $day_in_year - 1;
    $target_timestamp = $first_day_of_year + $days_to_add * 24 * 60 * 60;
    $target_date = date( "Y-m-d", $target_timestamp );
    return $target_date;
}
echo day_number_to_date( 32 ); //2014-02-01
echo day_number_to_date( 32, 2020 ); //2020-02-01
echo day_number_to_date( 400 ); //2015-02-04

答案 4 :(得分:0)

你需要你的代码知道它是什么年份 - 每两年2月29日令人讨厌 - 但它只是连续减去月份长度直到剩余部分小于下个月长度(同时记录最后减去哪个月)。像这个片段(伪C):

day_to_month (year, day_in_year)
  {
  day_count = day_in_year;
  if (not_leap_year());
    while (day_in_year < month [month_count])
      {
        subtract month[month_count++];
      }
  else
    while (day_in_year < leap_month [month_count])
      {
         subtract leap_month [month_count++];
      }
    }
  date_set (year, month_count, day_count);

我不写javascript,但我知道没有理由即使在bash脚本中也无法完成 - 只需要能够声明和初始化数组,以及基本的算术和流控制函数。

答案 5 :(得分:0)

&#13;
&#13;
function day2Date( day, year ) {
  return new Date(year,0,day);
}
console.log( day2Date( 32, 2014 ) ); //gives Sat Feb 01 2014 00:00:00
&#13;
&#13;
&#13;