PHP unix zaman haftanın bir gün dönüştürme

2 Cevap php

Ben şöyle biçimlendirilir tarih dizeleri için unix zamanını almaya çalışıyorum:

'second sunday of march 2010'
'first sunday of november 2010'

Bu yanlış döner gibi, görünüşte değil strtotime böyle bir dize kalkabileceğini izlenim altında oldu, ama. Haftanın bir günü, bir ay içinde bu (yani birinci, ikinci, vb) birini, bir ay ve bir yıl verildiğinde nasıl unix zaman dönüştürebilirsiniz.

2 Cevap

Bu strtotime ile mümkün olmalıdır. Sen mktime() kullanarak yürüyüşün ilk gün damgası üreten ve eklemeyi deneyebilirsiniz (dize bölümünde sadece "ilk Pazar" bırakarak) 2. bir parametre olarak:

$timestamp = mktime (0,0,0,3,1,2010);  // 1st of march
$first_sunday = strtotime("first sunday", $timestamp);

Bu ilk gün (1 Mart) aslında bir Pazar olmanın idare nasıl emin değil. Bunu kontrol emin olun.

Ayrıca, ve belki bu daha güvenilir, çek this dışarı - Poster o aşağıdaki gösterimde (alıntı) ile iyi sonuçlar var diyor ki:

<?php
strtotime('+0 week sun nov 2009'); // first sunday in nov 2009
strtotime('+1 week sun nov 2009'); // second sunday
strtotime('-1 week sun nov 2009'); // last sunday in oct 2009
?>

Her zaman olduğu gibi strtotime ile, seçtiğiniz ne olursa olsun, özellikle kenar durumlarda, emin iyi test yapmak (ayın 1. günü bir Pazar olduğunu, geçen ayın son günü .... bir pazar oldu)

Sizin kod PHP 5.3.0 ve benim için çalışıyor. PHP hangi sürümü kullanıyorsunuz?

<?php
date_default_timezone_set("Europe/Oslo");
$time_march = strtotime('second sunday of march 2010');
$time_november = strtotime('first sunday of november 2010');
echo date("Y-m-d", $time_march) . " (timestamp: $time_march)\n";
echo date("Y-m-d", $time_november) . " (timestamp: $time_november)\n";
?>

verir:

2010-03-14 (timestamp: 1268521200)
2010-11-07 (timestamp: 1289084400)