2012-05-17 38 views
9

Tôi có ngày ở định dạng (YYYYMM) này:Ngày hiện tại trừ 4 tháng?

201201 // Gen, 2012 
201202 // Feb, 2012 
201203 // ecc 

Hãy nói rằng từ 201.203 Tôi muốn trừ 4 tháng. Tôi không thể làm 201203 - 4 vì nó = 201199

201203 - 4 nên sản lượng 201111 (Nov, 2011)

Có lẽ tôi nên chuyển đổi chuỗi của tôi để một ngày và sau đó vượt qua nó để strtotime với -4 tháng?

Có đề xuất nào không?

+0

nhìn vào chức năng nổ và mktime. –

+2

@OZ_, sự trợ giúp nào sẽ bùng nổ ở đây? –

+0

http://php.net/manual/en/function.mktime.php –

Trả lời

28

Bạn có thể sử dụng strtotime trong PHP:

$date = strtotime('2012-05-01 -4 months'); 

article này sẽ giúp bạn.

0

Bạn có thể sử dụng strtotime để chuyển đổi chuỗi thành dấu thời gian UNIX, tính bằng giây. time() sẽ cung cấp cho bạn dấu thời gian UNIX hiện tại. Trừ họ để có được bao nhiêu tuổi, ngày tháng ở giây, và chia 60*60*24 để có được nó trong ngày

0

Có, bạn có thể chuyển đổi chuỗi của bạn vào một ngày (timestamp trong thực tế) và vượt qua nó để strtotime():

$dateString = "201201"; 
$minusFourMonth = strtotime(
    "-4 month", 
    strtotime(
     substr($dateString, 0, 4) . "-" . substr($dateString, 4, 2) . "-01" 
    ) 
); 
echo date("Ym", $minusFourMonth); // 201109 
8

strtotime() thể làm điều đó nhưng bạn sẽ cần phải thêm một ngày trong tháng cho nó phân tích ngày:

$input = '201203'; 

$input .= '01'; 

$date = strtotime($input .' -4 months'); 

echo date('Ym', $date); 

đầu ra tháng 11 năm 2011:

201111 
+1

Điều này làm việc hoàn hảo cho tôi, cảm ơn bạn rất nhiều. –

8

Ngoài các strtotime phiên bản, kể từ PHP 5.3 bạn cũng có thể sử dụng DateTimeDateInterval:

$date = DateTime::createFromFormat("Ym", "201201"); 
$interval = new DateInterval("P4M"); // 4 months 
$fourMonthsEarlier = $date->sub($interval); 
echo $fourMonthsEarlier->format("Ym"); 
0

cho EX $ da = 2014-04-01

nếu u muốn trừ 6 tháng sử dụng này ..

$date = strtotime($da .' -4 months'); 
$final=date('Y-m-d', $date); 

echo $ final;

0

đang Previous không làm việc:

$da='2014-08-29'; 
$date = strtotime($da .' -6 months'); 
$final=date('Y-m-d', $date); 
echo $final; 
$date = strtotime($da .' -7 months'); 
$final=date('Y-m-d', $date); 
echo $final; 

tháng hai là mất tích!

+0

chỉ mất 29 tháng 2 – vladkras

-1
$date = '2016-09-01 00:00:00.000000'; 

$date2 = date("Y-m-d H:i:s.u", strtotime($date." -4 months")); 

echo $date2; 

trên chạy mã này bạn sẽ nhận được 2016/05/01 00: 00: 00,000000

Các vấn đề liên quan