चूंकि यह वास्तव में नहीं दिखा रहा है कि वाई वाई वाई वाई: डीडीडी: एचएच: एमएम: एसएस टाइम टू यूनिक्स सेकेंड "जेड" विकल्प का उपयोग करके आपको DOY को महीने में और महीने के महीने में बदलने के लिए अपने कार्यों को बनाना होगा। यह मैं क्या किया है:
function _IsLeapYear ($Year)
{
$LeapYear = 0;
# Leap years are divisible by 4, but not by 100, unless by 400
if (($Year % 4 == 0) || ($Year % 100 == 0) || ($Year % 400 == 0)) {
$LeapYear = 1;
}
return $LeapYear;
}
function _DaysInMonth ($Year, $Month)
{
$DaysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
return ((_IsLeapYear($Year) && $Month == 2) ? 29 : $DaysInMonth[$Month - 1]);
}
function yydddhhssmmToTime($Year, $DOY, $Hour, $Min, $Sec)
{
$Day = $DOY;
for ($Month = 1; $Day > _DaysInMonth($Year, $Month); $Month++) {
$Day -= _DaysInMonth($Year, $Month);
}
$DayOfMonth = $Day;
return mktime($Hour, $Min, $Sec, $Month, $DayOfMonth, $Year);
}
$timeSec = yydddhhssmmToTime(2016, 365, 23, 23, 23);
$str = date("m/d/Y H:i:s", $timeSec);
echo "unix seconds: " . $timeis . " " . $str ."<br>";
पृष्ठ पर उत्पादन अपने काम करने से पता चलता बाद से मैं मूल इनपुट मानों के लिए वापस सेकंड वापस बदल सकते हैं। यूनिक्स सेकंड: 1483140203 12/30/2016 23:23:23
यह एक महान उत्तर है। वास्तव में अधिक upvotes मिलना चाहिए! धन्यवाद – andreapier
डेटटाइम 'एम' के लिए समर्थन: '' '$ sched_format = str_replace (सरणी ('एम', 'वाई', 'एम', 'डी', 'एच', 'मैं', 'ए'), सरणी ('% बी', '% वाई', '% एम', '% डी', '% I', '% एम', '% पी'), $ dformat); '' – kenorb
एक छोटी सी बग है, क्योंकि 'एच' को% H (24-घंटे प्रारूप) में बदल दिया जाना चाहिए, न कि% I (12-घंटे प्रारूप)। तो यहां बेहतर लाइन है: '' '$ sched_format = str_replace (सरणी ('एम', 'वाई', 'एम', 'डी', 'एच', 'मैं', 'ए'), सरणी ('% बी ','% वाई ','% एम ','% डी ','% एच ','% एम ','% पी '), $ dformat); '' – kenorb