Nasıl mesela itibaren damgası alabilirim 22-09-2008?
PHP'nin strtotime() a> verir
$timestamp = strtotime('22-09-2008');
Supported Date and Time Formats Docs ile çalışır hangi.
Orada da strptime() a> tam olarak bir biçimi beklediği:
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
(Bu, elbette rules are here tahmin değil) ne demek istediğini "tahmin" için try strtotime() gibi fonksiyonları ile dikkatli olun.
Bu sadece makul bir şey gibi gerçekten 22-09-2008, 22 September 2008 olarak işlenecek.
Nasıl 08-09-2008 ayrıştırılır olacak? Muhtemelen 09 August 2008.
Peki 2008-09-50? PHP bazı sürümleri 20 October 2008 olarak ayrıştırmak.
Eğer girdi GG-AA-YYYY biçiminde olduğundan emin iseniz Yani, @Armin Ronacher tarafından sunulan çözüm kullanmak daha iyidir.
Ile DateTime API a>:
$dateTime = new DateTime('2008-09-22');
echo $dateTime->format('U');
// or
$date = new DateTime('2008-09-22');
echo $date->getTimestamp();
Usul API ile aynı:
$date = date_create('2008-09-22');
echo date_format($date, 'U');
// or
$date = date_create('2008-09-22');
echo date_timestamp_get($date);
Bir unsupported format, kullanabilirsiniz kullanıyorsanız, çünkü yukarıda başarısız olursa
$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U');
// or
$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');
Eğer ! set yoksa, saat bölümü Eğer zaman atladığınızda gece yarısı kullanacağı ilk dört farklı şimdiki zaman, ayarlanmış unutmayın.
Yine başka bir alternatif IntlDateFormatter a> API kullanmak için:
$formatter = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'GMT',
IntlDateFormatter::GREGORIAN,
'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');
Eğer yerelleştirilmiş tarih dizeleri ile çalışmadığınız sürece, kolay bir seçim olasılığı DateTime.
Kullanma mktime,
list($day, $month, $year) = explode('-', '22-09-2008');
echo mktime(0, 0, 0, $month, $day, $year);
Burada split ve mtime fonksiyonları kullanılarak çok basit ve etkili bir çözüm:
$date="30/07/2010 13:24"; //Date example
list($day, $month, $year, $hour, $minute) = split('[/ :]', $date);
//The variables should be arranged according to your date format and so the separators
$timestamp = mktime($hour, $minute, 0, $month, $day, $year);
echo date("r", $timestamp);
Bu benim için bir cazibe gibi çalıştı.
Eğer formatı kullanımını biliyorsanız strptime, çünkü strtotime her zaman doğru olmayabilir biçimi, bir tahmin yok. strptime Windows uygulanmadı beri özel bir işlevi vardır
ReturnValue tm_year 1900'den olduğunu unutmayın! ve tm_month 0-11 olduğu
Örnek:
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900)
İşte ben bunu yapmak istiyorum nasıl:
function dateToTimestamp($date, $format, $timezone='Europe/Belgrade') {
//returns an array containing day start and day end timestamps
$old_timezone=date_timezone_get();
date_default_timezone_set($timezone);
$date=strptime($date,$format);
$day_start=mktime(0,0,0,++$date['tm_mon'],++$date['tm_mday'],($date['tm_year']+1900));
$day_end=$day_start+(60*60*24);
date_default_timezone_set($old_timezone);
return array('day_start'=>$day_start, 'day_end'=>$day_end);
}
$timestamps=dateToTimestamp('15.02.1991.', '%d.%m.%Y.', 'Europe/London');
$day_start=$timestamps['day_start'];
Bu şekilde, işlevi kullanarak ve hatta dilimini belirtmek ne tarih formatı bildirin.
Eğer bir tarih beklediğiniz şey içine derlenecek olmadığını kesin olarak bilmek istiyorsanız, kullanabileceğiniz DateTime::createFromFormat():
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
if (is_null($d)) {
die("Woah, that date doesn't look right!");
}
echo $d->format('Y-m-d'), PHP_EOL;
// prints 2008-09-22
Bu durumda açıktır, ama mesela 03-04-2008 nereden geldiğini bağlı olarak Nisan 3 veya 4 Mart olabilir :)
<?php echo date('U') ?>
İsterseniz, bir MySQL giriş türü zaman damgası koydu. (Sadece PHP 5 veya üstü) çok iyi yukarıda işler:
<?php $timestamp_for_mysql = date('c') ?>
This method works on both, Windows ve Unix. Em>
Eğer zaman dilimi hakkında bakım veya saat dilimini kullanmak istemiyorsanız sunucu kullanır:
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
echo $d->getTimestamp();
1222093324 (This will differ depending on your server time zone...)
Burada zaman dilimini, "EST" belirtmek istiyorum. (New York gibi aynı.)
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008', new DateTimeZone('EST'));
echo $d->getTimestamp();
1222093305
Yoksa UTC kullanmak istiyorsanız. (Same "GMT" olarak.)
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008', new DateTimeZone('UTC'));
echo $d->getTimestamp();
1222093289