PHP ile bir harita dilimi ayarları yapabilirsiniz?

2 Cevap php

Ben PHP / MySQL bir kaç yıldır üzerinde çalışıyorum bir sosyal ağ sitesi var, ben şimdi olsa yine sıfırdan yeniden tüm siteye buidling duyuyorum. I Bu sefer gerçekten benim sitede kez bir dilimini ayarlamak için kullanıcıların yeteneği eklemek istiyorum.

Yani, o dedi, ben bu lütfen yapmak için eklemeniz gereken adımları baştan sona bir kılavuz üzerinde soruyorum. Benim eski site tüm tarihler ve saatler için mysql datetime kullanılan ve harika çalıştı ama kimse bunu nasıl açıklayabilir, açılan bir metin gibi kullanmak ve UTC ile tüm tarihleri ​​ve süreleri depolamak için iyi olduğunu okudum? Ben hala mysql için zaman kazanmak için php şimdi () fonksiyonunu kullanmak mümkün olurdu?

Ayrıca ben php tüm dilimleri, o (gerçekten) bir milyon gibi gösterir birinin üretebilir listeyi gördük ama görüntüleri ya da bir şey ve bağlantı ile haritanın çeşit göstermek mümkün olacağını, merak ediyorum Ana dilimleri?

Kullanıcıların dilimini ayarlamak için herhangi bir ipucu lütfen, ben o kısmı yapabilirim, ama ben bir kullanıcının dilimini kaydedilir ve kullanıma hazır bir kere, nasıl kullanıcıların doğru zamanı görmüyor ve nasıl doğru zamanda defa kaydedebilirsiniz emin yapabilirsiniz.

Bu kafa karıştırıcı olsaydı Üzgünüz, herhangi bir yardım olsa teşekkürler harika olurdu.

2 Cevap

Php ile çalışırken, benim deneyimlerinden, bu veritabanında int olarak, time() ile oluşturulan damgaları, saklamak için en iyisidir. (Sadece sayı gerçek tarih tahmin edilemez gibi) veritabanına bakarak bunları okumak o kadar kolay olmayabilir, ancak php tarihleri ​​çalışırken damgası en-yerli şey olsa.

Her kullanıcının dilimini kaydetmek için, sadece birkaç dakika içinde (bazı dilimleri yarım saat kapalı gibi), ya saat ya da daha iyi, ofset kaydedebilirsiniz. Amerika'da çoğu -480 (UTC-8) ya da benzeri bir şey var iken Yani, örneğin ofset benim dilimi, +60 (UTC +1) olacaktır.

Bir kullanıcı için zamanlarını gösteren Sonra, sadece zaman damgası (UTC zaman içinde olan) ve ofset dilimini almak ve biçimlendirme için date() function standardını kullanarak ondan bir okunabilir tarih oluşturur.

Örneğin:

<?php
$time   = time(); // from database or time() for "now"
$offset = -480;   // from database

// add the offset to the time you want to display and you have the user's time
echo date( 'd.m.Y H:i', $time + $offset * 60 );
?>

Her kullanıcının kendi favori biçimini seçebilirsiniz böylece ek olarak daha sonra da, veritabanında (d.m.Y H:i) Biçimlendirme dize depolamak.

Eğer gün ışığı tasarruf ve sunucu bazı üyeleri farklı bir zaman diliminde olacağı aslında zaman faktörü Bu konu özellikle karmaşık alır.

Ben bu sorunları ele inşa edilmiştir orada bazı kütüphanelerde bir göz atın öneririz. PEAR paketi Tarih başlamak için iyi bir yer olabilir. http://pear.php.net/package/Date

Temel olarak, size üyeleri kendi profiliniz için bir zaman dilimini seçmek isterim. Sonra tüm kez (sunucu konumundan ofset kaldırmak için) UTC dönüştürmek ve bir zaman damgası olarak veritabanında saklayabilirsiniz. Kez görüntülerken, timezone parçanın yanı sıra bir tarih görüntüleme biçimi (belki varsayılan olarak UTC ile) kendileri için seçtik ofset geçerlidir.