Конвертировать дни и годы в день, месяц и год в формате php - PullRequest
1 голос
/ 09 февраля 2012

Итак, у меня есть количество дней и год в следующем формате:

322 days
2009 year

Мне нужно преобразовать это в 2009-11-18

Есть ли в php функция для достижения этой цели?

Ответы [ 5 ]

3 голосов
/ 09 февраля 2012

Конечно, используйте mktime и date:

$days = 322;
$year = 2009;
echo date('Y-m-d', mktime( 0, 0, 0, 1, $days, $year));

Выход: 2009-11-18

1 голос
/ 09 февраля 2012
$newformat = new DateTime::createFromFormat('Y z', "2009 322")->format('Y-M-d');

Соответствующие документы здесь: http://php.net/manual/en/datetime.createfromformat.php

0 голосов
/ 09 февраля 2012

У нас есть strtotime() в php, который может легко извлекать временную метку из года:

echo $time = strtotime( '1.1.2009');
// 1230764400

И связывать ее с добавлением дней:

echo $newTime = strtotime( '+322 days', $time);
// 1258585200
echo date( 'r', $newTime);
// Thu, 19 Nov 2009 00:00:00 +0100
echo date( 'Y-m-d', $newTime);
// 2009-11-19
// output will be 19 instead of 18 (due to how strtotime handles + days), you
// should use +321 days instead than

кстати: мне больше нравится ответ Марка Б.)

0 голосов
/ 09 февраля 2012

Трудный путь (и в качестве бонуса я разбираю приведенный вами пример ввода: p):

list($day, $foo, $year, $bar) = sscanf("322 days 2009 year", "%d %s %d %s");
$timestamp = mktime (0,0,0, 1, $day, $year);
echo date('Y-m-d', $timestamp);
0 голосов
/ 09 февраля 2012

Попробуйте это функция strtotime

...