2016-04-13 25 views
1

Veritabanımda CURRENT_TIMESTAMP olarak tarih satırım için varsayılan değer verdim. Şimdi Iam bu UTC tarihini & zaman kullanıcı oturum açma tarihine dönüştürmeye çalışıyorum & zaman. Convert UTC date time to local date time using JavaScript stackoverflow içinde bulduğum bir kod kullandım. Ama bu bana & tarihini doğru zamanda vermiyor. & zamanı için tüm sıfırları alıyorum. Denediğim kodu bul. Lütfen bunu bana acımada yardımcı olun, şimdiden teşekkürler.Veritabanından UTC zaman damgasını veritabanına giriş tarihine datetime olarak kaydetme

var today = new Date(); 
 
var date1 = convertUTCDateToLocalDate(new Date(today)); 
 

 
function convertUTCDateToLocalDate(date) { 
 
    var newDate = new Date(date1.getTime()+date1.getTimezoneOffset()*60*1000); 
 
    var offset = date1.getTimezoneOffset()/60; 
 
    var hours = date1.getHours(); 
 
    newDate.setHours(hours - offset); 
 
    return newDate; 
 
} 
 

 
var date = date1.toLocaleString(); 
 

 
$http.post('webservices/sample.php', { 
 
     'date':date, 
 
})

PHP kodu:

$date1=mysql_real_escape_string($data->date); 

$date=strtotime($date1); 

$timedatenew=date('Y-m-d H:i:s', $date); 

$query=mysql_query("insert into UserDate(actiondate) values('$timedatenew')"); 
+0

Açıklamadan soru almadığım için bazı girdiler ve beklenen çıktılardan bahseder misiniz? Kötü yeteneklerim için üzgünüm! –

+0

var isoDate = "2016-04-13T11: 01: 03.269Z" sonucunu elde etmek için bunu kolayca yapabilirim; var utcDate = "Çar, 13 Nis 2016 11:01:03 GMT" var localDateFromISO = new Tarih (isoDate); var localDateFromUTC = yeni Tarih (utcDate); console.log (isoDate, localDateFromISO); console.log (utcDate, localDateFromUTC); –

cevap

0

Sanıyorum tüm sıfırları alıyorsanız nedeni convertUTCDateToLocalDate fonksiyonunda DATE1 tüm referansların olduğunu. Bunun gibi bir şeyi deneyebilirsiniz:

function convertUTCDateToLocalDate(date) { 
    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000); 
    var offset = date.getTimezoneOffset()/60; 
    var hours = date.getHours(); 
    newDate.setHours(hours - offset); 
    return newDate; 
} 

var today = new Date(); 
var date1 = convertUTCDateToLocalDate(new Date(today)); 
var date = date1.toLocaleString(); 

$http.post('webservices/sample.php', { 
     'date':date, 
}) 
Yardım edin!

DÜZENLEME: Benim GERÇEK örnek kod (bunu test etmek için PHP arka ucuma sahip olmadığımdan).

<script> 

function convertUTCDateToLocalDate(date) { 
    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000); 
    var offset = date.getTimezoneOffset()/60; 
    var hours = date.getHours(); 
    newDate.setHours(hours - offset); 
    return newDate; 
} 

var today = new Date(); 
var date1 = convertUTCDateToLocalDate(new Date(today)); 
var date = date1.toLocaleString(); 

console.log(date); 

</script> 

Tarayıcımın konsol günlüğünde yerel tarih/saat görüyorum. Hala sorun yaşıyorsanız, benim bailiwick'imin dışındaki PHP koduyla ilgili bir şeyler yapabilir.

İyi şanslar!

+0

Değiştirildi, ancak çalışma arkadaşı değil. – User

+0

PHP kodunda, print_r ("$ timedatenew") kullanarak "$ timedatenew" değerini yazdırırken, "1970-01-01 01:00:00" tarihini alıyorum. Biçimi düzeltmek için nasıl değiştirebilirim? – User

+0

Örneğimde gerçek yerel tarih/saati alıyorum ("4/13/2016, 06:28:26 AM"). JavaScript tarihlerini biçimlendirmek tam olarak kolay değildir (bkz. Http://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date). PHP'de JavaScript tarihini ayrıştırmadan daha iyi olabilirsiniz. Maalesef PHP hakkında hiçbir şey bilmiyorum. Afedersiniz. : - \ – CaffeineFueled

İlgili konular