Вы можете попробовать что-то вроде этого:
tzDreeves = {"Buenos Aires", "13 March", "13 September", 3, 4};
tZone[date_, tz_] :=
Piecewise[{{tz[[4]],
First@
DateDifference[tz[[2]]<>" "<>DateString[date,"Year"], date, "Second"] > 0 &&
First@
DateDifference[tz[[3]]<>" "<>DateString[date,"Year"], date, "Second"] < 0}},
tz[[5]]];
myTimeDif[d1_, d2_, tz_] :=
DateDifference[DateList@AbsoluteTime[d1, TimeZone -> tZone[d1, tz]],
DateList@AbsoluteTime[d2, TimeZone -> tZone[d2, tz]], "Second"]
myTimeDif["March 13, 2011", "March 14, 2011", tzDreeves]
myTimeDif["March 12, 2011", "March 13, 2011", tzDreeves]
->
{82800,Second} -> 23 hours
{86400,Second} -> 24 hours
В следующем примере вы можете увидеть эффект от DS.Мы наносим разницу во времени на фиксированную дату через границу летнего времени:
data = Table[{
DateList@DatePlus["March 12, 2011, 11PM", {i 10, "Minute"}],
First@myTimeDif[DatePlus["March 12, 2011, 11PM", {i 10, "Minute"}],
"March 14, 2011, 2 AM", tzDreeves]},
{i, 1, 13}];
DateListPlot[data,
DateTicksFormat -> {"MonthNameShort", " ", "Day", "\n ", "Time"},
GridLines -> {{{{2011, 3, 13}, Red}}, None},
PlotStyle -> PointSize[Large]]
![enter image description here](https://i.stack.imgur.com/BZcbn.png)