2015-12-04 3 views
-1

Я хочу, чтобы конвертировать UTC время во время браузера пользователя. Я пробовал loat, но его отображение меня только системное время. Работа с приложением django. может anybudy помочь мне.Преобразование времени UTC в локальное время с использованием python

import pytz 
    from tzlocal import get_localzone 
    def utc_to_local(utc_dt):#utc_dt that is UTC time 
     local_tz = get_localzone() 
     print local_tz #that is display system timezone inplace of USER's timezone 

Я пробовал под кодом ниже.

import time 
from datetime import datetime 
from dateutil import tz 
utc = datetime.strptime(str(utc_dt)[:19], '%Y-%m-%d %H:%M:%S') 
return time.mktime(utc_dt.timetuple()) * 1000 

конвертировать время utc в секунду, а затем использовать javascript для его локального времени. но значение конверсии неточно и отображает неправильную дату.

Javascript code.

//1449206930000 #Seconds when above code run 
//1449226703.79 #that is correct >> time.time() in python = 1449226703.79 

#below code give perfact output 
var date = new Date(parseInt(1449226703.79, 10) * 1000); 
console.log(date); 

#below code not working 
var date = new Date(parseInt(1449206930000, 10) * 1000); 
console.log(date); 

С уважением

+3

У вас есть код, который вы пробовали? –

+0

Я редактировал вопрос. С нетерпением ждем от вас в ближайшее время –

ответ

0

Вам нужно найти часовой пояс пользователей первым, для преобразования времени в там местном часовом поясе.

Есть два способа сделать это.

1) Пропустите просто UNIX-timestamp, а затем используйте Javascript для преобразования его в удобное для пользователя время в браузере momentjs.

function human_time(unixtime, tz) { 
    var t=moment.unix(unixtime); 
    return t.tz(tz).format('DD/MM/YY HH:mm:ss'); 
} 

2) Use IP address or HTTP headers to detect the user location, а затем использовать pytz для преобразования времени в системе пользователей часовой пояс вместо своего часового пояса Джанго/сервер.

def get_user_timezone(request): 
    return request.visitor.location.timezone 

def human_time(dt, tz="Asia/Kolkata"): 
    try: 
     tz = pytz.timezone(tz) 
    except: 
     tz = pytz.timezone("Asia/Kolkata") 
    dt = dt.astimezone(tz) 
    return dt.strftime(r'%d/%m/%Y %H:%M:%S %Z') 

def view_get_local_time(request): 
    tz = get_user_timezone(request) #detect user timezone, base on IP 
    text = human_time(timezone.now(), tz) #convert server-time to detected timezone 
    return HttpResponse(text) 

Примечание: Первый способ является наиболее предпочтительным методом.

0
import time, calendar 
import datetime 
utc = datetime.datetime.strptime(str(timezone_rt)[:19], '%Y-%m-%d %H:%M:%S') 
return time.mktime(time.localtime(calendar.timegm(utc.timetuple()))) #convert utc time into second that correct output like function time.time() 

Спасибо за помощь.

Смежные вопросы