İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Belirli bir tarihte iki farklı lokasyonun saat ve tarihini bulma?

muzo-ozum

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
8
Reaction score
0
Örnek: http://www.timeanddate.com/worldclock/converter.html

Şurada gördüğünüz örnekteki gibi bir şey ile uğraşıyorum lokasyonlar belli ve elimdeki tek bilgi lokasyonlarım gmt (greenwich kasabası 0 noktası) ye göre saat farkı. +0200(2 saat ileride) -0030(yarım saat geride) gibi.

Bu bilgiler dahilinde istediğim işi nasıl yapabilirim. Şimdiden ilgilenenlere teşekkürler.
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
PHP 5.3.x ve üzeri sürümlerinde zaten sizlere sunucu saatine dayalı işlem yapmanızı önermiyor.
PHP:
date_default_timezone_set('Europe/Istanbul');
şeklinde ayarlama yapabiliyorsunuz.
Bu şekilde istemiyorsanız
PHP:
date('Y-m-d H:i:s', strtotime('-1 hour'))
şeklinde kullanım yaparak istediğiniz saate göre ekleme çıkarma yapabilirsiniz.
 

muzo-ozum

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
8
Reaction score
0
PHP 5.3.x ve üzeri sürümlerinde zaten sizlere sunucu saatine dayalı işlem yapmanızı önermiyor.
PHP:
date_default_timezone_set('Europe/Istanbul');
şeklinde ayarlama yapabiliyorsunuz.
Bu şekilde istemiyorsanız
PHP:
date('Y-m-d H:i:s', strtotime('-1 hour'))
şeklinde kullanım yaparak istediğiniz saate göre ekleme çıkarma yapabilirsiniz.

Öncelikle teşekkür ederim.

Bahsettiğiniz yöntemle sadece şu anki tarihten belirli bir saat ekleyebiliyo yada çıkartabiliyorum ben kendi belirlediğim bir tarih ve saate saat ekeleme yada çıkarma işini çözemedim. Çıkarılan saate göre gün, ay yada yıl atlamalı.
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
Merhabalar,
GMT saat ayarları gibi diyince bende şuanki tarih ve saate göre ayar olarak anladım. Sorunuzu sanıyorum yanlış sormuşsunuz ya da en azından yanlış anlaşılmalara sebebiyet verebilecek şekilde sormuşsunuz.

2. farklı yol izleyerek yapabilirsiniz.
1. Yol'da PHP'nin DateTime sınıfını kullanarak.
PHP:
$date = new DateTime("now");
$updateTime = 60 * 60; // 1 Saat
$date->add(new DateInterval("PT".$updateTime."S")); // PT -> Period Time, S-> Saniye
echo $date->format('Y-m-d H:i:s');
Yukarıdaki kod PHP 5.3.x ve üzerinde çalışmaktadır. PHP 5.2.x sürümü için ;
PHP:
$date = new DateTime("now");
$date->modify('+1 hour');
echo $date->format('Y-m-d H:i:s');
Daha ayrıntılı bilgi için DateTime sınıfı klavuzuna göz gözdirebilirsiniz.

2. Yol eski bilindik strtotime() ve date() fonksiyonlarını kullanarak;
PHP:
$date = strtotime ( "+1 hour" , strtotime ( $oldDate) ) ; //$oldDate = eski tarih
$date = date ( 'Y-m-d H:i:s' , $date );
echo $date;
Elbette bu yol tek satırada düşürülebilinir;
PHP:
echo date ( 'Y-m-d H:i:s' , strtotime ( "+1 hour" , strtotime ( $oldDate) ) );
Kolay gelsin.

Not: Umarım tekrar yanlış anlamadım. 2 saatlik uykuyla ayaktayım test etmeden hızlıca yazdım, bir sorun çıkacağını sanmıyorum ama uykusuzluktan yazım hatası yapmış olabilirim.
 

muzo-ozum

0
İyinet Üyesi
Katılım
9 Mart 2011
Mesajlar
8
Reaction score
0
Merhabalar,
GMT saat ayarları gibi diyince bende şuanki tarih ve saate göre ayar olarak anladım. Sorunuzu sanıyorum yanlış sormuşsunuz ya da en azından yanlış anlaşılmalara sebebiyet verebilecek şekilde sormuşsunuz.

2. farklı yol izleyerek yapabilirsiniz.
1. Yol'da PHP'nin DateTime sınıfını kullanarak.
PHP:
$date = new DateTime("now");
$updateTime = 60 * 60; // 1 Saat
$date->add(new DateInterval("PT".$updateTime."S")); // PT -> Period Time, S-> Saniye
echo $date->format('Y-m-d H:i:s');
Yukarıdaki kod PHP 5.3.x ve üzerinde çalışmaktadır. PHP 5.2.x sürümü için ;
PHP:
$date = new DateTime("now");
$date->modify('+1 hour');
echo $date->format('Y-m-d H:i:s');
Daha ayrıntılı bilgi için DateTime sınıfı klavuzuna göz gözdirebilirsiniz.

2. Yol eski bilindik strtotime() ve date() fonksiyonlarını kullanarak;
PHP:
$date = strtotime ( "+1 hour" , strtotime ( $oldDate) ) ; //$oldDate = eski tarih
$date = date ( 'Y-m-d H:i:s' , $date );
echo $date;
Elbette bu yol tek satırada düşürülebilinir;
PHP:
echo date ( 'Y-m-d H:i:s' , strtotime ( "+1 hour" , strtotime ( $oldDate) ) );
Kolay gelsin.

Not: Umarım tekrar yanlış anlamadım. 2 saatlik uykuyla ayaktayım test etmeden hızlıca yazdım, bir sorun çıkacağını sanmıyorum ama uykusuzluktan yazım hatası yapmış olabilirim.


Sanıyorum ben anlatamadım kusura bakmayın. İlginize çok teşekkür ederim ancak olay tam olarak şu şekilde.


Elimde şöyle bir saat ve tarih bilgisi var ;

Saturday, 01 December 2012, 13:00:00

Örneğin Türkiye'de yukarıkdaki tarihteyken arasında 10 saat fark olduğunu düşünerek Amerika da aynı formatta tarih ve saat bilgisi gerekiyor.

Yani şu formatta bir tarihe "Saturday, 01 December 2012, 13:00:00" dilediğim gibi saat ekleme ve çıkartma yapmalıyım, bu artış yada azalmaya göre gün,ay yada yıl değişiyorsa değişmeli.

Tekrar çok teşekkür ederim, çok uzun zamandır uğraştığım bir iş.
 

Aydın Sistem

0
İyinet Üyesi
Katılım
29 Mayıs 2011
Mesajlar
0
Reaction score
1
Konum
Polonya
Tekrardan merhabalar,

PHP 5.1.2 sürmünün altında kullanım yapıyorsanız sunucu saatine göre bu işlemleri hangi ülkeyse, ülkenin sunucu saatine göre farkını bir önceki mesajımda 2. Yol ile ayarlamanız gerekecek.

PHP 5.1.2 ve üzeri sürümlerinde tek tek saat farkını el ile belirtmek yerine date_default_timezone_set() fonksiyonundan yararlanarak saati yine ülkeye göre bir fonksiyon içerisine atıp ayarlayabilir, tarih bilgisini çektikten sonra yine date_default_timezone_set() fonksiyonuyla tarihi orjinal ayarlarına çekebilirsiniz. Yazdığım fonksiyonlardaki "Ek olarak kullanılacak sunucu en az PHP 5.1.2 sürümüne sahipse;" yazısının altındaki fonksiyona benzer bir şekilde bir fonksiyon yaratabilirsiniz.

Eğer bunu yapabilecek yeterli PHP bilgisine sahip değilseniz, hemen hemen istisnasız her sunucuda çalışabilecek bir fonksiyon istiyorsanız;

PHP:
# BİR TARİHE EKLEME, ÇIKARMA YAPALIM
function addSubtractDate ($date, $amount) {
 return date ( 'Y-m-d H:i:s' , strtotime ( $amount, strtotime ( $oldDate) ) ); 
}
# TARİHİ GÜZELLEŞTİRELİM
function humanDates ($date) {
# GÜNLER
$lang['days'][]= 'Sunday';
$lang['days'][]= 'Monday';
$lang['days'][]= 'Tuesday';
$lang['days'][]= 'Wednesday';
$lang['days'][]= 'Thursday';
$lang['days'][]= 'Friday';
$lang['days'][]= 'Saturday';

# AYLAR
$lang['months'][]= lisanssız;
$lang['months'][]= 'January';
$lang['months'][]= 'February';
$lang['months'][]= 'March';
$lang['months'][]= 'April';
$lang['months'][]= 'May';
$lang['months'][]= 'June';
$lang['months'][]= 'July';
$lang['months'][]= 'August';
$lang['months'][]= 'September';
$lang['months'][]= 'October';
$lang['months'][]= 'November';
$lang['months'][]= 'December';

return $lang['days'][date("w",$date)]. ", ".date("d",$date)." ".$lang['months'][date("n",$date)]." ".date("Y",$date).",  ".date("H:i",$date);
}

function countryTime ($addSubtract, $currentDate) {
# Tarihe Ekleme / Çıkarma Yaptıktan Sonra Tarihi Güzelleştirip Gösterelim
return humanDates ( addSubtractDate ($currentDate, $addSubtract) );
}

humanDates() fonksiyonu içerisine dil değişkeni attım, böylece farklı diller içinde rahatlıkla kullanabilirsiniz.

Ek olarak kullanılacak sunucu en az PHP 5.1.2 sürümüne sahipse;
PHP:
function countryTime ($addSubstract, $currentDate) {
#GMT +0'a ayarlayalım
date_default_timezone_set('Europe/London');
# Tarihe Ekleme / Çıkarma Yaptıktan Sonra Tarihi Güzelleştirip Gösterelim
$newDate = humanDates ( addSubtractDate ($currentDate, $addSubstract) );

# SUNUCU SAATINE GERİ ÇEKELİM
date_default_timezone_set('America/Neresiyse artık...');

# DEĞERİ DÖNDÜRELİM
return $newDate;
}

Şeklinde GMT+0 a ayarlanıp, buna göre GMT değerleri için sadece $addSubstract değişkenine GMT 'den sonra gelen değeri atayıp (örn +1 , -5 gibi);
PHP:
humanDates ( addSubtractDate ($currentDate, $addSubstract.' hours') );
Şeklinde kullanımda sağlanabilinir.

Kullanım Örneği;
PHP:
$turkey= countryTime ('+2 Hours', date('Y-m-d', strtotime('now')) );

Kodları test etmedim, forumda bu mesajımı yazarken yazdım. 2 saat anca uyuyabildim, telefonla bir iş için uyandırıldım, henüz uyanamadım ama yinede hatalı kodlama yaptığımı sanmıyorum. Bir test edin, hata çıkarsa yazarsanız düzenlerim.

Kolay gelsin.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst