将此格式'031012'的日期转换为我可以添加天数的日期

时间:2012-03-12 17:21:27

标签: php date

我的日期格式为030512(ddmmyy) 但是我将这个转换为日期可用格式时遇到了麻烦,我可以添加几天。

基本上......我从文本文件中提取了上面的日期,现在我需要能够为它添加一些天。但我无法以此格式解析日期。

有没有其他方法可以做到这一点,而不是像这样:

// I have a date in this format
$date = '030512'; // 03 May 2012

$day = substr($date,0,2);
$month = substr($date, 2,2);
$year = substr($date, 4,2);
$date_after = $day . "-" . $month . "-".$year;

// Now i need to add x days to this
$total_no_nights = 010; // must be this format
$days_to_add = ltrim($total_no_nights,"0"); // 10, remove leading zero

// how do i add 10 days to this date.

5 个答案:

答案 0 :(得分:4)

你可以这样做(php> = 5.3):

$date = DateTime::createFromFormat('dmy', '030512');
$date->modify('+1 day');
echo $date->format('Y-m-d');

http://www.php.net/manual/en/datetime.createfromformat.php

对于php< 5.3:

$dateArray = str_split('030512', 2);
$dateArray[2] += 2000;
echo date("d/m/Y", strtotime('+1 day', strtotime(implode('-', array_reverse($dateArray)))));

答案 1 :(得分:3)

使用您已有的月/日/年来尝试:

$date = "$month/$day/$year";
$change = '+10 day';
echo date("d/m/Y", strtotime($change, strtotime($date)));

答案 2 :(得分:1)

你不能用字符串进行日期操作,因为它们不是日期。在PHP中,您可以使用Unix时间戳(实际上是整数...)或DateTime对象。在你的情况下:

$timestamp = strtotime('-10 days', mktime(0, 0, 0, $month, $day, $year));
echo date('r', $timestamp);

......或:

$object = new DateTime("$year-$month-$day");
$object->modify('-10 days');
echo $object->format('r');

另请注意,010是一个八进制数字,对应于十进制的8

答案 3 :(得分:1)

假设日期总是在将来(或者至少在2000年1月1日之后),那你就错了:

// I have a date in this format
$date = '030512'; // 03 May 2012

$day = substr($date,0,2);
$month = substr($date, 2,2);
$year = substr($date, 4,2);
// dd-mm-yy is not a universal format but we can use mktime which also gives us a timestamp to use for manipulation
$date_after = mktime( 0, 0, 0, $month, $day, $year );

// Now i need to add x days to this
$total_no_nights = "010"; // must be this format
$days_to_add = intval( $total_no_nights ); // No need to use ltrim

// Here's the "magic". Again it returns a timestamp
$new_date = strtotime( "+$days_to_add days", $date_after );

使用DateTime对象会更容易,但是你说你没有使用PHP5.3。

答案 4 :(得分:0)

使用sql中的convert函数可以以适当的格式获取日期。

可以在php中执行操作来操纵日期。我希望能回答你的问题。