2010-06-13 49 views

回答

0

您可以使用 “pytz” 来完成this.Try:

from string import atoi 
from datetime import datetime 
import pytz # Available http://sourceforge.net/project/showfiles.php?group_id=79122 

thedate = "20080518" 
thetime = "2210" 

europe_tz = pytz.timezone('Europe/Paris') # Note that your local install timezone should be settings.py 
brazil_tz = pytz.timezone('America/Sao_Paulo') 
server_tz = pytz.timezone('America/Los_Angeles') 

stat_time = datetime(atoi(thedate[0:4]), atoi(thedate[4:6]), atoi(thedate[6:8]), atoi(thetime[0:2]), atoi(thetime[2:4]), 0, tzinfo=europe_tz) 

stat_time.astimezone(brazil_tz) # returns time for brazil 
stat_time.astimezone(server_tz) # returns server time 

来源:http://menendez.com/blog/python-timezone-conversion-example-using-pytz/

+0

它不是为我好,我得到了2 strigns-“04:05”和“-0100”和我whant使用它们来calc下新的时间,但10倍! – 2010-06-13 09:04:49

1

尝试是这样的:

>>> import datetime 
    >>> my_time = datetime.datetime.strptime('04:05', '%H:%M') 
    >>> my_time 
    datetime.datetime(1900, 1, 1, 4, 5) 
    >>> offset_str = '-0100' 
    >>> offset = datetime.timedelta(hours=int(offset_str.lstrip('-')[:2]), minutes=int(offset_str.lstrip('-')[2:])) * (-1 if offset_str.startswith('-') else 1) 
    >>> offset 
    datetime.timedelta(-1, 82800) 
    >>> my_time + offset 
    datetime.datetime(1900, 1, 1, 3, 5) 
    >>> (my_time + offset).time() 
    datetime.time(3, 5) 

简而言之:

>>> import datetime 
    >>> my_time = datetime.datetime.strptime('04:05', '%H:%M') 
    >>> offset_str = '-0100' 
    >>> offset = datetime.timedelta(hours=int(offset_str.lstrip('-')[:2]), minutes=int(offset_str.lstrip('-')[2:])) * (-1 if offset_str.startswith('-') else 1) 
    >>> (my_time + offset).time() 
    datetime.time(3, 5) 
+0

10x!那将会完成这项工作,但任何人都可以想到一种更加pythonic的方式? – 2010-06-13 10:49:36