• 09-10-2012, 07:34:59
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Selamlar,

    veritabanımdan tüm tarihler Y/m/d formatında geliyor. bende bunu türkçeleştirmek için bir otomasyona bağlamak istiyorum.

    normalde sunucudan gelen tarihi aşağıdaki gibi çeviriyorum

    function turkce_tarih($pul) { 
        $gunler = array('Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe',  
                        'Cuma', 'Cumartesi'); 
        $aylar  = array('', 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran',  
                        'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'); 
    
        return date("d ", $pul).$aylar[date("n", $pul)].date(" Y ", $pul). 
               $gunler[date("w", $pul)]; 
    }
    
    echo turkce_tarih(time());
    ama bunu veritabanından gelen <?php echo $sonuc['Tarih']; ?> ile bağdaştıramadım.

    sabit bir fonksiyon olarak bunu halledip <?php echo fonksiyonadi($sonuc['Tarih']); ?> şeklinde nasıl alabiliriz?
  • 09-10-2012, 11:42:20
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    date fonksiyonunda timestamp kullanmanız gerek, ilk olarak veritabanında değerleri 2010-10-11 gibi değilde 12433721837 şeklinde unix timestamp olarak saklamanız daha sağlıklı bunu basit olarak time() ile alıp kaydedebiliyorsunuz.

    Daha sonra date("d", $timestamp) yaptığınızda istediğiniz sonucu alırsınız. Eğer timestamp değilse değerleriniz strtotime gibi bir fonksyion vardı onunla değerinizi timestamp a çevirip date içinde kullanabilirsiniz. oda olmadı, diyelim ki değeriniz:

    2010-10-11, bunu explode("-") ile bölüp, mktime içinde kullanarak yine timestampa dönüştürebilirsiniz.

    Her halükarda date içinde kullanmak için timestamp yapmanız gerekiyor

    kolay gelsin.
  • 09-10-2012, 12:10:33
    #3
    Veritabanıma tarihleri date ile giriyorum. kayıt girişlerini phpmy adminden yaptığım için çok kolaylık sağlıyor.

    ayrıca yukarıda kullandığım turkce_tarih fonksiyonuda istediğimi yapıyor.

    sorunum şu: yukarıdaki fonksiyon time ile gelen tarihi istediğim formata getiriyor. olmasını istediğim ise veritabanından gelen tarih.

    mantık olarak veritabanımdan gelen tarihi değişkene atayıp bu fonksiyonla çevirebilirim diye düşünüyorum ama bunun uygulamasını yapamadım.
  • 09-10-2012, 13:36:29
    #4
    Bu kod işini görür
    <? @setlocale(LC_ALL, 'turkish');
    echo strftime("%d %B %Y",strtotime("2012/10/9"));  
    ?>
  • 09-10-2012, 14:13:27
    #5
    Hocam bu benim istediğime yakın bir sonuç verdi. Ama bir sorun varki ben anlam veremedim

    Tarih: <?php 
    	setlocale(LC_ALL, 'turkish');
    	
    	echo strftime("%d %B %Y",strtotime($sonuc['Tarih'])); ?>
    kodum bu

    sonuç: Tarih: 06 October 2012
  • 09-10-2012, 17:05:05
    #6
    setlocale(LC_ALL,'tr_TR.1254');

    setlocale(LC_ALL,'tr_TR.UTF-8');

    bunları bir denermisin.
  • 09-10-2012, 18:01:40
    #7
    yok hocam her alternatifi denedim ama olmuyor.

    forumda biraz daha araştırdım bunu, localde çalıştırıp sunucuda çalıştıramayanlar olmuş, php versionuyla alakalı olabileceğinden bahsediliyor.

    şimdi daha da ilginç bişey oldu.

    Tarih: <?php 
    	function turkce_tarih($pul) {  
        $gunler = array('Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe',   
                        'Cuma', 'Cumartesi');  
        $aylar  = array('', 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran',   
                        'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık');  
    
        return date("d ", $pul).$aylar[date("n", $pul)].date(" Y ", $pul).  
               $gunler[date("w", $pul)];  
    } 
    
    echo turkce_tarih($sonuc['Tarih']); 
    	
    	?>
    Tarih: 01 Ocak 1970 Perşembe şeklinde sonuç veriyor.

    sadece
    <?php echo $sonuc['Tarih']; ?>
    kodu oluncada Tarih 2012-10-06 diyor. yani veritabanından doğru geliyor ama izin önerdiğiniz şekilde yapınca ay adı ingilizce benim yaptığım şekilde olunca alakasız bi sonuç çıkıyor bu kadar karışık mıdır bu tarih olayı yaw
  • 10-10-2012, 01:04:55
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    yok hocam her alternatifi denedim ama olmuyor.

    forumda biraz daha araştırdım bunu, localde çalıştırıp sunucuda çalıştıramayanlar olmuş, php versionuyla alakalı olabileceğinden bahsediliyor.

    şimdi daha da ilginç bişey oldu.

    Tarih: <?php 
    	function turkce_tarih($pul) {  
        $gunler = array('Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe',   
                        'Cuma', 'Cumartesi');  
        $aylar  = array('', 'Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran',   
                        'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık');  
    
        return date("d ", $pul).$aylar[date("n", $pul)].date(" Y ", $pul).  
               $gunler[date("w", $pul)];  
    } 
    
    echo turkce_tarih($sonuc['Tarih']); 
    	
    	?>
    Tarih: 01 Ocak 1970 Perşembe şeklinde sonuç veriyor.

    sadece
    <?php echo $sonuc['Tarih']; ?>
    kodu oluncada Tarih 2012-10-06 diyor. yani veritabanından doğru geliyor ama izin önerdiğiniz şekilde yapınca ay adı ingilizce benim yaptığım şekilde olunca alakasız bi sonuç çıkıyor bu kadar karışık mıdır bu tarih olayı yaw
    Arkadaşım veritabanından tarih Y-m-d olarak geliyor. Fonksiyonun ise timestampa göre yazılmış. Yani ya veritabanında tarihi timestamp olarak tut, ya da fonksiyonu ona uyarla.

    Veya kestirme olarak veritabanından tarihi seçerken

    'select falan, filan, unix_timestamp(Tarih) as Tarih from tablo'
    diye çekersen o şekilde fonksiyona gönderebilirsin. Veya geldikten sonra çevirip gönderirsin.

    $t = explode('-', $sonuc['Tarih']);
    $tarih = mktime(0,0,0,$t[1],$t[2],$t[0]);
    echo turkce_tarih($tarih);
    gibi. ama benim tavsiyem işlem kolaylığı bakımından veritabanında timestamp olarak tutman. Böylece istediğin formatta gösterebilirsin her zaman.
  • 10-10-2012, 10:49:56
    #9
    Fonksiyonumu

    $t = explode('-', $sonuc['Tarih']); 
    $tarih = mktime(0,0,0,$t[1],$t[2],$t[0]); 
    echo turkce_tarih($tarih);
    şeklinde kullanmak işime yaradı öncelikle bunun için teşekkür ederim.

    timestamp gerçekten daha mantıklı olabilir ancak ben şu an sitem için bir admin paneli yazmadım ve bütün verileri manuel olarak giriyorum. o yüzden tarih için timestamp yerine date kullanmak daha işime geliyor.

    yakın zamanda admin paneli için kolları sıvayacağım inşallah