Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Türkçe Tarih Formatı

%d.%m.%Y %H:%M:%S


şeklinde bir formatla

26 February 2012 Sunday 02:10

bu şeklinde bir çıktı alıyorum.
Peki burada February ve Sunday'ı nasıl türkçe yazdıracağız?

bir fonksiyonla replace yapamıyorum çünkü bu formatı sql içinde


"\n DATE_FORMAT(tarih, '%d %B %Y %A %H:%M') as tarihimiz"



şeklinde alıyorum.

Bu şekilde bir sistemde gün ve ay ismini nasıl türkçeleştirebilirim?
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • ziyahan adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    29 cevap - 2 soru
    SQL'da (phpmyadmin ya da mysqladmin) şunu yazınız :

    SET GLOBAL lc_time_names='tr_TR'
    • zyber adlı üyenin fotoğrafı zyber
      #1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
      SET GLOBAL lc_time_names = 'tr_TR'
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      Şunu deneyin,

      SET lc_time_names = 'tr_TR'


      Yetkiniz GLOBAL olarak set etmek için yeterli olmayabilir. Bu şekilde lokal olarak değişkeni set edebilirsiniz.
      10 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      lokalimde denedim
      %d.%B.%Y %A %H:%M
      için
      29 February 2012 Wednesday 10:09
      sonuç verdi
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      PHP kodunuzu da yollar mısınız? Bu verdiğim kod, root yetkiniz olmadığı için, SQL sorgunuzu çalıştırmadan önce kod ekranından da yapmanız gereklidir. PHP kodunuzu yapıştırırsanız size yardımcı olabilirim.
      10 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      bu bir cms demosu bu adreste http://wojoscripts.com/cmspro
      işleyiş şu şekilde
      Mysql ayarlar tablosunda uzun tarih formatı

      long_date varchar(50) = "%d.%m.%Y %H:%M"
      dtz varchar(120) = "Europe/Istanbul"

      şeklinde tutuluyor.

      $sql = "SELECT c.*, c.id as id, a.id as artid, a.title{$core->dblang} as title,"
                . "\n DATE_FORMAT(c.created, '" . $core->long_date . "') as cdate"
                . "\n FROM mod_article_comments as c" 
                . "\n LEFT JOIN " . $this->mTable . " AS a ON a.id = c.artid"
                . "\n $where"
                . "\n ORDER BY " . $sorting . $cmpager->limit;
                $row = $db->fetch_all($sql);  
      


      DATE_FORMAT(c.created, '" . $core->long_date . "') as cdate  
      


      Buradaki $core->long_date Mysql deki ayarlar tablosundan o değeri alıyor....

      soruyla ilgili alanlar bunlar ama kod tek sayfa değil dediğim gibi ayar lar tablosu classlar ve diğer sayfalar include edildiği için tek bir sayfa gibi düşünmeyiniz.
      Bunlar dışında gerekli kısım var mı bilemiyorum.


      kodu lokalde deniyorumi problemi olmaması için

      <?php
      if (!defined("_VALID_PHP")) die('Bu konuma doğrudan erişim yok.');
      SET lc_time_names = 'tr_TR';
      ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      



      şeklinde yazdım ama yinede sonuç şu şekilde
      29.February.2012 Wednesday 10:09

      üstteki söylediğinizide lokalde mysql de çalıştırmıştım....
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      Şöyle yapabilirsiniz:


      $row = $db->fetch_all($sql);

      satırından hemen önce şunu yazınız.
      $db->query("set lc_time_names='tr_TR'");
      10 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      $sql = "SELECT *, DATE_FORMAT(created, '" . $core->short_date . "') as start,"
      ." \n YEAR(created) AS year, MONTH(created) AS month, COUNT(id) AS total"
      ." \n FROM " . $this->mTable
      ." \n WHERE active = 1 OR (expire != '0000-00-00 00:00:00' OR expire >= NOW())"
      . "\n GROUP BY year DESC, month DESC";
      $db->query("set lc_time_names='tr_TR'"); 
      $row = $db->fetch_all($sql);
      


      şeklinde yaptım ama sonuç yine aynı :(
      29.February.2012 Wednesday 10:09
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      Kodunuzdan şu satırları siliniz:


      <?php
      if (!defined("_VALID_PHP")) die('Bu konuma doğrudan erişim yok.');
      SET lc_time_names = 'tr_TR';
      ?>
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      Dilerseniz Teamviewer verin bağlanıp bakayım.
      10 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      mail.com ile biten mailinize mail gönderdim
      10 yıl önce yazılmış
    • ziyahan adlı üyenin fotoğrafı ziyahan
      Size eposta ile cevap gönderdim.
      10 yıl önce yazılmış
    • zyber adlı üyenin fotoğrafı zyber
      Selamlar,
      Ziya Bey Mailiniz Gereksizler içine düştüğü için mesajınız sonrasında okuyabildim.
      Buraya ve size yazdıktan sonra araştırmalarıma devam ettim ve şu sonuca ulaştım.

      Tarih alanı aşağıdaki fonksiyondan geçirilmişti.

      function dodate($format, $date) {
      return strftime($format, strtotime($date));
      } 
      


      bu fonksiyona setlocale(LC_ALL, "turkish"); i ekledim

      function dodate($format, $date) {
      setlocale(LC_ALL, "turkish");
      return strftime($format, strtotime($date));
      } 
      


      Sonuçta 29 �ubat 2012 �ar�amba 12:00 şeklinde bir çıktı aldım.

      Fonksiyonda dönen sonucu bu defa da mb_convert_encoding ile "UTF-8" den "ISO-8859-9" formatına çevirdim.
      Elbette bu çevirme işlemlerinde bir çok şekil deneyerek bunda istediğim sonucu aldım.
      Google'ı araştırdığımda çoğu kişi bu sorunu yaşamaktaydı.

      Sonuçta fonksiyonu şu şekle getirdim ve sorun kalmadı.

      function dodate($format, $date) {
      setlocale(LC_ALL, 'Turkish');
      return mb_convert_encoding(strftime($format, strtotime($date)), "UTF-8", "ISO-8859-9");
      } 
      


      Sonuç olumlu ancak sizin bu işlemlerime bir yorum ve tavsiyenizde benim için önemli.
      Bu sonuçtan sonra tavsiyeleriniz sonucunda konuyu kapatmak üzere hoşcakalın.
      Herşey için teşekkür ederim.
      10 yıl önce yazılmış