我怎麼知道這是迄今爲止在這一年,如果我只知道一天數...在今年變換時至今
比方說,如果我知道那一天是「1」,然後拿到2014年1月1日,如果我知道那天是'32',那麼得到01.02.2014?
這是可能的JavaScript?
那麼php呢?
我怎麼知道這是迄今爲止在這一年,如果我只知道一天數...在今年變換時至今
比方說,如果我知道那一天是「1」,然後拿到2014年1月1日,如果我知道那天是'32',那麼得到01.02.2014?
這是可能的JavaScript?
那麼php呢?
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
爲什麼這不爲我工作 - 給我錯誤的日期:$ target_date = date(「l,Ydm」,$ target_timestamp); – 2014-11-02 21:56:27
@JamesD。它爲我工作(輸出'2014年2月2日星期六'),除了您每月更換一天。 – Lukas 2014-11-03 07:55:11
試試這個:
var date = new Date("" + new Date().getFullYear());
var day = 32;
date.setDate(date.getDate() + day-1);
console.log(date); // => Sat Feb 01 2014 ...
在JavaScript中,你可以通過簡單地創建與天參數設置爲您所需要一年的一天,一個新Date
對象做到這一點 - 看到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);
看完你的問題後,聽起來好像你想要提供日期和年份來獲取特定的日期。
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
你需要你的代碼知道它是什麼年代,太 - 每四年討厭的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腳本甚至做 - 只是需要聲明和初始化能力數組,以及基本的算術和流量控制功能。
function day2Date(day, year) {
return new Date(year,0,day);
}
console.log(day2Date(32, 2014)); //gives Sat Feb 01 2014 00:00:00
這是可能的,支持最新的每一種語言。 – undefined 2014-11-02 11:56:03
一切皆有可能。 但你應該決定,你想要客戶端(JavaScript)或服務器端(PHP)的日期處理... 在php中看到mktime()函數... – 2014-11-02 11:56:31