Giriş


Bu bölümde veritabanında UTC olarak saklanan tarih ve saatlerin, kullanıcının kendi yerel saat dilimine göre doğru biçimde gösterilmesi sorunu ele alınıyor. Çözüm olarak Moment.js JavaScript kütüphanesi ve bunu Flask ile entegre eden Flask-Moment eklentisi kullanılıyor.


Saat Dilimi Sorunu

Sunucu tüm zaman damgalarını UTC olarak saklar; bu tutarlılık açısından doğrudur. Ancak farklı saat dilimlerindeki kullanıcılar UTC zamanlarını görünce kendi yerel saatine dönüştürmek zorunda kalır. Bu kötü bir kullanıcı deneyimidir.

Çözüm: UTC zaman damgalarını tarayıcı tarafında, JavaScript kullanarak kullanıcının yerel saat dilimine dönüştürmek. Tarayıcı kullanıcının saat dilimini ve yerel biçim tercihlerini (12/24 saat, tarih formatı vb.) zaten bilir.

İki Yaklaşım

Eski Yöntem: Kullanıcının saat dilimi bilgisi JavaScript ile sunucuya gönderilir ve sunucu dönüşümü yapar.

Yeni Yöntem (tercih edilen): Sunucu hiçbir şey değiştirmez; UTC zaman damgaları tarayıcıya gönderilir ve JavaScript dönüşümü tarayıcıda gerçekleştirir. Bu yöntem daha esnektir çünkü tarayıcı saat diliminin yanı sıra yerel biçim tercihlerini de bilir.


Moment.js ve Flask-Moment

Moment.js — tarih/saat biçimlendirmesi için popüler bir açık kaynaklı JavaScript kütüphanesi. Flask-Moment — Moment.js'i Flask şablonlarına entegre eden bir Flask eklentisi.

Kurulum

(venv) $ pip install flask-moment

app/__init__.py — Moment Nesnesini Oluştur

from flask_moment import Moment

app = Flask(__name__)
# ...
moment = Moment(app)

app/templates/base.html — Moment.js Kütüphanesini Ekle

    ...
    {{ moment.include_moment() }}
  </body>
</html>