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.
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.
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 — 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.
(venv) $ pip install flask-moment
app/__init__.py — Moment Nesnesini Oluşturfrom 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>