2012-12-20 37 views
7

Tôi đang cố gắng lấy tháng, sáu tháng kể từ ngày hiện tại.Thêm sáu tháng vào php

Tôi đã cố gắng sử dụng:

date('d', strtotime('+6 month', time()));

Nhưng nó dường như không làm việc, luôn luôn trả về 01. Có cách nào tốt hơn để làm điều này?

Cảm ơn bạn!

+0

Là một sang một bên, 'strtotime () 'sử dụng thời gian hiện tại theo mặc định nếu bạn bỏ qua tham số thứ hai. Ngoài ra, tôi không nghĩ rằng 'strtotime()' sẽ tính tháng vì nó không phải là khoảng thời gian tuyệt đối, ví dụ: số ngày khác nhau theo từng tháng. –

Trả lời

18

Tôi thấy làm việc với DateTime dễ dàng hơn để sử dụng:

$datetime = new DateTime(); 
$datetime->modify('+6 months'); 
echo $datetime->format('d'); 

hoặc

$datetime = new DateTime(); 
$datetime->add(new DateInterval('P6M')); 
echo $datetime->format('d'); 

hoặc trong PHP phiên bản 5.4+

echo (new DateTime())->add(new DateInterval('P6M'))->format('d'); 
+0

Hoạt động hoàn hảo, cảm ơn bạn! – dzm

2

Nếu bạn vẫn muốn sử dụng strtotime và Hàm ngày tháng trái với đối tượng DateTime(), sau đây sẽ hoạt động:

date('d', strtotime('+6 months')); 
0

Bạn không cần phải vượt qua time() đến strtotime, vì đây là mặc định.

Ngoài ra, cách tiếp cận của bạn là chính xác - ngoại trừ việc bạn lấy date('d') (sắp đặt ngày) và không date('m') cho tháng, vì vậy echo date('m', strtotime('+6 month')); nên làm.

Tuy nhiên, tôi khuyên bạn nên sử dụng cách DateTime, mà John đã nêu. DateTime có một số ưu điểm so với chức năng ngày "cũ", ví dụ: chúng không ngừng hoạt động khi giây kể từ khi chữ nhật lớn UNIX không vừa với số nguyên 32 bit nữa.

1

Bạn có thể sử dụng lớp DateTime kết hợp với lớp DateInterval:

<?php 
$date = new DateTime(); 
$date->add(new DateInterval('P6M')); 

echo $date->format('d M Y'); 
0

Bạn có thể sử dụng simpleDate lớp:

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->now()->addMonth(6)->get(); 

Kiểm tra tutorials here.

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