2011-10-28 39 views
8

im tìm Chuỗi sửa đổi ngày giờ cho ngày đầu tiên của năm (nay là ngày 1 tháng 1 năm 2011). Tôi đã thử các cách sau:Chuỗi sửa đổi ngày giờ cho ngày đầu tiên của năm hiện tại

<?php 

$time = new DateTime(); 

// works as expected, the first day of the current month 
$time->modify('first day of this month'); 
echo $time->format('c')."\n"; 


// this doesn't work. I also tried several other ways 
$time->modify('first day of january'); 
echo $time->format('c')."\n"; 

> 

Tôi biết có nhiều cách khác để truy xuất ngày, nhưng tôi tìm kiếm chuỗi cho DateTime-> modify() không có giải pháp nào khác.

+0

Tôi nghĩ bạn đã tìm thấy lỗi. Tôi có php 5.3.3 và với việc sử dụng "ngày đầu tiên của" hoặc "ngày cuối cùng của" và một tháng + năm nó không hoạt động. Nó chỉ đơn giản cung cấp cho bạn ngày đầu tiên/ngày cuối cùng của tháng hiện tại (hoặc trước đó đã thay đổi với sửa đổi). –

+1

Vâng, bạn đúng là một lỗi của nó. Tôi nghĩ rằng đây là vấn đề: "5.3.6 \t Hiện tại, báo cáo ngày/giờ tuyệt đối có hiệu lực". - Trước đây, chỉ sử dụng các bộ phận tương đối. Từ: http://www.php.net/manual/en/datetime.modify.php .Cảm ơn sự giúp đỡ của bạn anyway – Marko

+0

Vâng, trong trường hợp này câu trả lời của tôi vẫn đúng nhưng đối với phiên bản php> = 5.3.6;) –

Trả lời

12

Bạn nên xác định năm quá, như bạn có thể thấy trong ví dụ này:

"first day of January 2008" 

từ official doc.

Cập nhật: Nó hoạt động trên phiên bản php> = 5.3.6

+0

Đã thử nhưng không hoạt động: $ time-> modify ('ngày đầu tiên của tháng 1 năm 2011'); echo $ time-> format ('c'). "\ N"; $ time-> modify ('ngày đầu tiên của tháng 1 năm nay'); echo $ time-> format ('c'). "\ N"; – Marko

+0

@Marko Bạn nói đúng. Tôi đang đào sâu vào vấn đề kỳ lạ này. –

8

On v5.5.6

tiếng vang ngày ('Ym-d', strtotime ('ngày đầu tiên của tháng trong năm nay '));

Kết quả: 2013-01-01

+0

Thử nghiệm trên php 5.3.10 một tác phẩm giống như một sự quyến rũ! tks! – holygrinder

2

Để có được ngày trong tuần cho những người đầu tiên của năm hoặc ngày đầu tiên của tháng

<?php 
//This is for a given month 
$m="May"; 
    // this id for this month 
    //$m=date('F'); 
    //if you want the day of Sunday instead D use lower case l 
    echo date('D', strtotime('first day of January this year')); 
echo "<br>". date("D", strtotime('first day of'. $m)); 
?> 

quả Wed Đối với tháng với D
quả Thứ tư với l

1

Tác phẩm này dành cho tôi (PHP 5.6 - không được thử nghiệm trên phiên bản cũ) ... khi chúng tôi nói chuyện với DateTime đối tượng

//Get current datetime 
$now = new DateTime(); 
$now->modify('first day of January this year'); 

echo $now->format('Y-m-d'); 
// Print (current year)-01-01 
0
echo (new DateTime())->modify('first day of January this year')->format('Y-m-d'); 
Các vấn đề liên quan