Hei,
datetime og pytz har sine egne problemer, og kombinert med 'windows-features '
så går det ordentlig galt, som i dette tilfellet.
google gir et svar på det konkrete problemet, f.eks:
For matplotlib, bokeh etc. kan man unngå datetime og alle problemene den introduserer fullstendig, fordi disse tilbyr å sende inn
presis representasjon for tid istedet for kalender-koordinater.
Vi kommer til å justere eksemplene våre i shyft slik at vi unngår å benytte datetime.
For f.eks matplotlib og tidakse kan du benytte:
from shyft.orchestration import plotting as splt
ta=TimeAxis( ...)
timestamps = splt.utc_to_greg(ta.time_points[:-1])
plt.plot(timestamps,...)
I denne sammenhengen er det greit å nevne at i shyft benytter vi
standarden sekunder siden 1970 utc for å representere tid.
For å konvertere mellom kalender-koordinater (Y,M,D,h,m,s) eller (iso year,week day, h,m,s) og tid benyttes
Calendar() klassen. Denne baserer seg på standardbiblioteker (p.t. c++ std, og boost).
oslo = Calendar('Europe/Oslo') # Europe/Oslo er en olson tz-id, google
# fra kalender koordinater til presis tid
t1 = oslo.time(2017,5,10, 9,30,15) # fra Y, M, D h m s
t2 = oslo.time_from_week(2017,50,1, 9,45,0) # fra iso Year week, day h m s
# fra presis tid til kalender-koordinater i en gitt kalender/tidssone
t1_as_YMDhms = oslo.calendar_units(t1) #
t1_as_isoYWdhms =oslo.calendar_week_units(t1)
# fra tid til iso standard tekst
t1_as_iso_std_string = oslo.to_string(t1)
For å gjøre kalender-semantiske operasjoner (tar hensyn til tz, dst osv, benyttes også Calendar() klassen,
c.trim(t,delta_t)
c.add(t,delta_t,n)
c.diff_units(t_from,t_to,delta_t_unit)
f.eks:
# Runde av til nærmeste start av iso uke i norsk lokal tid
t1_oslo_week =oslo.trim(t1,Calendar.WEEK)
# legge til en semantisk kalender dag i norsk lokal tid (23, 24 eller 25 timer lang..)
t_next_day = oslo.add(t1,Calendar.DAY,1) # 1 dag
# finne antall semantiske kalender dager mellom to tidspunkt i norsk lokaltid:
n = oslo.diff_units(t1,t2,Calendar,DAY)
Mvh Sigbjørn