Discussion:
bash: Ist gerade Sommer- oder Winterzeit?
Al Bogner
2010-09-24 15:18:27 UTC
Permalink
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Sascha 'saigkill' Manns
2010-09-24 16:12:28 UTC
Permalink
Hi Al,
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
Gib in der bash mal date ein. Wenn hinter der Uhrzeit CEST steht ist
Sommerzeit. Bei CET Winterzeit IIRC.

Viel Spaß
Sascha
--
Sincerely yours

Sascha Manns
open-slx GmbH
openSUSE Community & Support Agent
openSUSE Marketing Team

Blog: http://saigkill.wordpress.com
Web: http://www.saschamanns.de

Web: http://www.open-slx.de (openSUSE Box Support German)
Web: http://www.open-slx.com (openSUSE Box Support English)
Open-SLX : Linux convenient, simple, secure and complete
Thomas Moritz
2010-09-24 16:14:23 UTC
Permalink
Am Freitag, 24. September 2010 17:18:27 schrieb Al Bogner:

Hallo Al,
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
date +%Z

MfG Th. Moritz
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 17:52:46 UTC
Permalink
Hallo Thomas,
Post by Thomas Moritz
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
date +%Z
Meine Frage ist simpel, das was dahinter steht ist kompliziert.

Neuere Nokla-Handys eignen sich mit Sportstracker zum Geotagging der
Fotos (einer externen Kamera). Leider schreibt Sportstracker die
gox-Datei nicht mitUTC, sondern als lokale Zeit des Handys.

Nun frage ich mich, wie man die Änderng auf UTC automatisieren könnte.

Die "manuelle" Lösung ist:
gpsbabel -t -i gpx -f "$1" -x track,move=-2h -o gpx -F out.gpx \
-o kml,units=m -F out.kml # 2. Zeile f. GoogleEarth

Unter der Annahme, dass man Daten in der eigenen Zeitzone aufgezeichnet
hat, müsste man automatisieren können, ob nun -1 oder -2 (bei
Sommerzeit) verwendet werden soll.

So fängt zB die GPX-Datei an

<?xml version="1.0" encoding="ISO-8859-1"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1"
creator="Sports Tracker"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd"> <metadata> <name>26.08.2010
18:02</name> <desc>Other 1</desc> <author><name>Joe
Average</name></author> <time>2010-08-26T18:02:49.06</time> </metadata>
<trk>
<name>26.08.2010 18:02</name>
<trkseg>
<trkpt lat="47.918368" lon="13.161253">
<ele>571.5</ele>
<speed>0.07</speed>


Daraus müsste man definieren können, wie groß der Offset ist.
Problematisch wird es aber, wenn die GPX-Daei einen Wechsel von Sommer-
auf Winterzeit oder umgekehrt enthält.

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Thomas Moritz
2010-09-24 18:15:43 UTC
Permalink
Am Freitag, 24. September 2010 19:52:46 schrieb Al Bogner:

Hallo Al,
Post by Al Bogner
Meine Frage ist simpel, das was dahinter steht ist kompliziert.
Neuere Nokla-Handys eignen sich mit Sportstracker zum Geotagging
der Fotos (einer externen Kamera). Leider schreibt Sportstracker
die gox-Datei nicht mitUTC, sondern als lokale Zeit des Handys.
Nun frage ich mich, wie man die Änderng auf UTC automatisieren könnte.
Mit den Angaben unten garnicht! Mein/Dein Datalogger z.B. zeichnet
generell _alles_ per GMT auf. Das macht auch Sinn, denn es ist egal,
wo Du gerade scannst! Moskau, Canada, usw.
Die spaetere Auswertung bleibt Dir, dem User ueberlassen! GMT kommt
vom Stern da oben und der Rest ist Deine Sache!
Post by Al Bogner
gpsbabel -t -i gpx -f "$1" -x track,move=-2h -o gpx -F out.gpx \
-o kml,units=m -F out.kml # 2. Zeile f. GoogleEarth
Dazu musst _Du_ aber wissen, _wann_ _Du_ gescannt hast! Automatisch
gibt es imho nur die Datumsberechnung!
Post by Al Bogner
Daraus müsste man definieren können, wie groß der Offset ist.
Problematisch wird es aber, wenn die GPX-Daei einen Wechsel von
Sommer- auf Winterzeit oder umgekehrt enthält.
Das kannst Du _nur_ per Datum definieren.
Letzter Sonntag im Maerz Sommerzeit
Letzter Sonntag im Oktober Winterzeit

Das Berechnen sollte kein Problem darstellen.
Falls doch, dann schau ich nach :-)

MfG Th. Moritz
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 18:49:25 UTC
Permalink
Hallo Thomas,
Post by Thomas Moritz
Post by Al Bogner
Meine Frage ist simpel, das was dahinter steht ist kompliziert.
Neuere Nokla-Handys eignen sich mit Sportstracker zum Geotagging
der Fotos (einer externen Kamera). Leider schreibt Sportstracker
die gox-Datei nicht mitUTC, sondern als lokale Zeit des Handys.
Nun frage ich mich, wie man die Änderng auf UTC automatisieren könnte.
Mit den Angaben unten garnicht! Mein/Dein Datalogger z.B. zeichnet
generell _alles_ per GMT auf.
Eben nicht, genau das ist das Problem. Im GPX-File, das der
Sportstracker erstellt, habe ich eine Zeitdifferenz von 2h. Der
Sportstracker hält sich nicht an die GPX-Spezifikation und ich will es
mir möglichst einfach machen, das zu ändern.
Post by Thomas Moritz
Das macht auch Sinn, denn es ist egal,
wo Du gerade scannst! Moskau, Canada, usw.
Die spaetere Auswertung bleibt Dir, dem User ueberlassen! GMT kommt
vom Stern da oben und der Rest ist Deine Sache!
Post by Al Bogner
gpsbabel -t -i gpx -f "$1" -x track,move=-2h -o gpx -F out.gpx \
-o kml,units=m -F out.kml # 2. Zeile f. GoogleEarth
Dazu musst _Du_ aber wissen, _wann_ _Du_ gescannt hast! Automatisch
gibt es imho nur die Datumsberechnung!
Das Datum steht ja im GPX-FIle, also sollte man daraus den Offset
berechnen können.

cat W20100826180249.gpx | grep time | head -n 1| cut -c7-16
2010-08-26

bzw.

cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25
2010-08-26T18:02:49

Jetzt bin ich nur noch am überlegen, wie ich das am besten an date
verfüttere, sodass dann CET oder CEST angezeigt wird, oder ist das
nicht möglich?

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Thomas Moritz
2010-09-24 19:13:38 UTC
Permalink
Am Freitag, 24. September 2010 20:49:25 schrieb Al Bogner:

Hallo Al,
Post by Al Bogner
Das Datum steht ja im GPX-FIle, also sollte man daraus den Offset
berechnen können.
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-16
2010-08-26
bzw.
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25
2010-08-26T18:02:49
Jetzt bin ich nur noch am überlegen, wie ich das am besten an date
verfüttere, sodass dann CET oder CEST angezeigt wird, oder ist das
nicht möglich?
Was willst Du genau _anders_ an date verfuettern?

1) W20100826180249 26.08.2010 18:02:49
2) W20100826180249 26.08.2010 18:02:49

hmmm????

Siehe Mail zuvor!

Du kannst CEST und CET anhand des Datums berechnen und anzeigen
lassen! Kripplig koennte die Berechnung zwischen 2-3Uhr werden. Darum
musste ich mich bisher jedoch noch nicht kuemmern.

MfG Th. Moritz
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 19:42:47 UTC
Permalink
Hallo Thomas,
Post by Thomas Moritz
Post by Al Bogner
Das Datum steht ja im GPX-FIle, also sollte man daraus den Offset
berechnen können.
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-16
2010-08-26
bzw.
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25
2010-08-26T18:02:49
Jetzt bin ich nur noch am überlegen, wie ich das am besten an date
verfüttere, sodass dann CET oder CEST angezeigt wird, oder ist das
nicht möglich?
Was willst Du genau _anders_ an date verfuettern?
1) W20100826180249 26.08.2010 18:02:49
2) W20100826180249 26.08.2010 18:02:49
hmmm????
Ich verstehe dein hmmm jetzt, das funktionierte vorher nicht:

cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25 | date +%Z
CEST

Da war wohl irgendwo ein kleiner Unterschied.

Danke

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Thomas Moritz
2010-09-24 20:04:49 UTC
Permalink
Am Freitag, 24. September 2010 21:42:47 schrieb Al Bogner:

Hallo Al,
Post by Al Bogner
Post by Thomas Moritz
Was willst Du genau _anders_ an date verfuettern?
1) W20100826180249 26.08.2010 18:02:49
2) W20100826180249 26.08.2010 18:02:49
hmmm????
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25 | date
+%Z CEST
Da war wohl irgendwo ein kleiner Unterschied.
Und warum verballerst Du cat, grep, head, cut...?
Im Filename stehen doch alle Angaben!

MfG Th. Moritz
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 20:56:54 UTC
Permalink
Hallo Thomas,
Post by Thomas Moritz
Post by Al Bogner
Post by Thomas Moritz
Was willst Du genau _anders_ an date verfuettern?
1) W20100826180249 26.08.2010 18:02:49
2) W20100826180249 26.08.2010 18:02:49
hmmm????
cat W20100826180249.gpx | grep time | head -n 1| cut -c7-25 | date
+%Z CEST
Da war wohl irgendwo ein kleiner Unterschied.
Und warum verballerst Du cat, grep, head, cut...?
Im Filename stehen doch alle Angaben!
Darauf kann ich mich nicht verlassen. Ich habe das Handy für Geotagging
erst 2 mal verwendet und wenn mich das Programm lässt, dann schreibe ich
als Dateiname eine Bezeichnung rein. Allerdings ist es noch immer
mysteriös, ob ich es wegen der versuchten Internetverbindungen, die ich
abbreche, auch schaffe. Das Programm nervt ziemlich mit den Versuchen
sich ins Internet zu verbinden. Vielleicht ist das für Sportler
sinnvoll, für meinen Zweck aber total unnötig.

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Michael Raab
2010-09-24 16:14:08 UTC
Permalink
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
Auf Winterzeit wird erst am letzten Wochenende im Oktober umgestellt.

Bye Michael
--
Beware of a tall blond man with one black shoe.
_________________________________________________________________________
Registered VDR User #1525 Loadavg.: 0.66 1.03 1.18 http://dattuxi.de/
Registered Linux User #228306 Linux 2.6.32-25-generic ICQ #151172379
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Falk Sauer
2010-09-24 16:19:48 UTC
Permalink
Hi Al,
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
Al
date +%Z

oder

date +%c

oder

date +%:z

oder

date +%z

usw.

und den Vergleich dazu überlegst du dir bitte selbst.

ps: date --help gibt es auch

Gruss
Fallk
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Tobias Crefeld
2010-09-24 16:44:40 UTC
Permalink
Am Fri, 24 Sep 2010 17:18:27 +0200 schrieb Al Bogner
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
Solange Dein Script nur in einer Zeitzone arbeitet, reicht eine Abfrage
von date +%Z .

Wenn das allerdings global funktionieren soll, müsstest Du "isdst"
abfragen und da kenne ich keine Möglichkeit.

Ein etwas umständlicher, aber prinzipiell funktionsfähiger Ansatz
könnte sein, das aktuelle Jahr (date +%Y) und die Zeitzone (date +%Z)
zu verwenden, um /etc/localtime zu greppen und dort isdst abzufragen,
also in etwa so:
zdump -v /etc/localtime |grep "$(date +%Y)\ $(date +%Z)"

Wobei eigentlich nur das "isdst=1" bzw. "isdst=0" an Ende interessant
ist, also
zdump -v /etc/localtime |grep "$(date +%Y)\ $(date +%Z)" |cut -f16 -d"
" |head -1


Wahrscheinlich gibt's auch ne Möglichkeit, "isdst" direkt im System
abzufragen, aber zumindest "date" scheint sie nicht zu bieten.
--
Gruß,
Tobias.
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 18:24:40 UTC
Permalink
Post by Tobias Crefeld
Am Fri, 24 Sep 2010 17:18:27 +0200 schrieb Al Bogner
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
Solange Dein Script nur in einer Zeitzone arbeitet, reicht eine
Abfrage von date +%Z .
Zur Problematik und zum Inhalt des Scripts siehe nebenan. Ich denke
aber, dass es mir reicht, wenn es nur auf die Zeitzone Rücksicht nimmt,
die Deutschland betrifft. Das wird die Regel sein und andere Zeitzonen
müssen, dann eben händisch definiert werden.

gpsphoto ( http://sourceforge.net/projects/gps2photo/ ) kennt da schon
einen Automatismus, da auch die Koordinaten ausgewertet werden, der
hilft mir aber nicht, da die ursprüngliche Zeit nicht normgerecht ist:

guess --tz-guess=zone.tab

Aus Kompitabilitätsgründen muss / will ich aber die gpx-Datei
korrigieren, die die lokale Zeit des Handys verwendet.

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2010-09-24 20:06:16 UTC
Permalink
Hallo,
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
(ich hab gleich noch in den anderen Mails nachgeschaut)

====
gpxfile=foo.gpx ### besser als Argument

is_dst() {
if -n "$1"; then
return $(date -d "$1" '+0%0z/100-1'|bc);
else
return $(date '+0%0z/100-1'|bc);
fi
}

date=$(awk -F'time' '
/<time>/ {
gsub("[<>/]","",$2);
print $2;
exit 0;
}' "$gpxfile"
)

if is_dst; then : ... ; fi

if is_dst "$date"; then : ...; fi

====

Viel Spaß beim verstehen ;)

Achso, klappt so nur mit UTC+1 (Winterzeit), ansonsten muß man sich
was überlegen. Im Zweifel sollte man dann perl zurückgreifen, da hat
man u.a. Zugriff auf isdst.

$ perl -e 'print [localtime()]->[8], "\n";'
1 ### localtime hat 'now' als default, Feld 8 in der ist das
### mit der "isdst"-Angabe.
$ perl -MPOSIX -e print [localtime(mktime(0,0,0,13,12,2010))]->[8], "\n";
0

Siehe 'man perlfunc' für localtime und 'man POSIX' für 'mktime'.
Wieder mal ein Beispiel, wie "so Krams" in perl sehr einfach sein
kann ... *scnr*

-dnh
--
I feel like I'm diagonally parked in a parallel universe.
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-24 21:02:17 UTC
Permalink
Am Fr, 24 Sep 2010 22:06:16 CEST schrieb David Haller:

Hallo David,
Post by David Haller
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
(ich hab gleich noch in den anderen Mails nachgeschaut)
====
gpxfile=foo.gpx ### besser als Argument
is_dst() {
if -n "$1"; then
return $(date -d "$1" '+0%0z/100-1'|bc);
else
return $(date '+0%0z/100-1'|bc);
fi
}
date=$(awk -F'time' '
/<time>/ {
gsub("[<>/]","",$2);
print $2;
exit 0;
}' "$gpxfile"
)
if is_dst; then : ... ; fi
if is_dst "$date"; then : ...; fi
====
Viel Spaß beim verstehen ;)
Ein schönes Übungsbeispiel, danke.

Ich habe es so gelöst:

TIMEZONE=`cat "$1" | grep time | head -n 1| cut -c7-25 | date +%Z`

if [ "$TIMEZONE" = "CEST" ] ; then
UTCOFFSET=-2h
elif [ "$TIMEZONE" = "CET" ] ; then
UTCOFFSET=-1h
fi

gpsbabel -t -i gpx -f "$1" -x track,move=$UTCOFFSET -o gpx -F out.gpx \
-o kml,units=m -F out.kml
Post by David Haller
Achso, klappt so nur mit UTC+1 (Winterzeit), ansonsten muß man sich
was überlegen. Im Zweifel sollte man dann perl zurückgreifen, da hat
man u.a. Zugriff auf isdst.
$ perl -e 'print [localtime()]->[8], "\n";'
1 ### localtime hat 'now' als default, Feld 8 in der ist das
### mit der "isdst"-Angabe.
$ perl -MPOSIX -e print [localtime(mktime(0,0,0,13,12,2010))]->[8],
"\n"; 0
Siehe 'man perlfunc' für localtime und 'man POSIX' für 'mktime'.
Wieder mal ein Beispiel, wie "so Krams" in perl sehr einfach sein
kann ... *scnr*
Grins, wie schon nebenan geschrieben, da gibt es für Perl was, dass die
Zeit mit den Koordinaten abgleicht, ist aber wohl overkill. Ich
verlasse meine Zeitzone selten.

PS: Zu der Mailgeschichte bin ich noch nicht weiter, ist zu viel los.
Hast du das PW erhalten? (Antwort per PM)

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2010-09-24 22:40:20 UTC
Permalink
Hallo,
Post by Al Bogner
Post by David Haller
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
[..]
Post by Al Bogner
TIMEZONE=`cat "$1" | grep time | head -n 1| cut -c7-25 | date +%Z`
XML kannst du nicht mit 'cut' bearbeiten.
Post by Al Bogner
if [ "$TIMEZONE" = "CEST" ] ; then
UTCOFFSET=-2h
elif [ "$TIMEZONE" = "CET" ] ; then
UTCOFFSET=-1h
fi
Nimm folgendes:

====

gpxfile="$1"

date=$(awk -F'time' '
/<time>/ {
gsub("[<>/]","",$2);
print $2;
exit 0;
}' "$gpxfile")

utcoffset=$(date -d "$date" '+0%z/100' | bc \
| sed 's/^\([0-9]\)/+\1/;y/+-/-+/;s/$/h/;' )

# weiter mit gpsbabel

====

Das würde soweit auch in anderen Zeitzonen funktionieren (setz mal
TZ=EST ;)

[..]
Post by Al Bogner
Post by David Haller
Siehe 'man perlfunc' für localtime und 'man POSIX' für 'mktime'.
Wieder mal ein Beispiel, wie "so Krams" in perl sehr einfach sein
kann ... *scnr*
Grins, wie schon nebenan geschrieben, da gibt es für Perl was, dass die
Zeit mit den Koordinaten abgleicht, ist aber wohl overkill. Ich
verlasse meine Zeitzone selten.
;)
Post by Al Bogner
PS: Zu der Mailgeschichte bin ich noch nicht weiter, ist zu viel los.
Hast du das PW erhalten? (Antwort per PM)
Bin auch noch nicht zum testen gekommen.

-dnh
--
Flhacs wird im Usenet grundsätzlich alsfhc geschrieben. Schreibt man
lafhsc nicht slfach, so ist das schlichtweg hclafs.
(Hajo Pflueger in de.newuser.questions)
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Al Bogner
2010-09-25 09:34:43 UTC
Permalink
Am Sa, 25 Sep 2010 00:40:20 CEST schrieb David Haller:


Hallo David,
Post by David Haller
Post by Al Bogner
Post by Al Bogner
Wie frage ich mit der bash ab, ob gerade Sommer- oder Winterzeit ist?
[..]
Post by Al Bogner
TIMEZONE=`cat "$1" | grep time | head -n 1| cut -c7-25 | date +%Z`
XML kannst du nicht mit 'cut' bearbeiten.
Ich will nicht XML _bearbeiten_. Die Bearbeitung erfolgt durch gspbabel
mit "move". Ich will nur wissen, ob die GPX-Datei der Sommer- oder
Winterzeit zugeordnet werden muss, wobei ich annehme, dass die
GPX-Datei nicht Daten aus beiden Zeiten enthält. Es geht also nur um
Offset -1 oder -2. Das ist auch mit dem Handy schwer vorstellbar, dass
die GPX-Datei über mehrere Tage geht, da bei Stop abgespeichert wird.
Bei meinem GPS können die Daten mehrere Tage betreffen, aber darum geht
es ja hier nicht.

Für andere Zeitzonen könnte man ein $2 machen, wo man den Offset direkt
angeben kann, das lasse ich aber auf mich zukommen. Bei Reisen nehme
ich mein GPS mit, das müsste zufällig defekt werden, o.ä., sodass ich
das Handy verwende.
Post by David Haller
Post by Al Bogner
if [ "$TIMEZONE" = "CEST" ] ; then
UTCOFFSET=-2h
elif [ "$TIMEZONE" = "CET" ] ; then
UTCOFFSET=-1h
fi
====
gpxfile="$1"
date=$(awk -F'time' '
/<time>/ {
gsub("[<>/]","",$2);
print $2;
exit 0;
}' "$gpxfile")
echo "$date"
2010-08-26T18:02:49.06

cat "$gpxfile" | grep time | head -n 1| cut -c7-25
2010-08-26T18:02:49

Warum sollte da ein Unterschied sein?

Genau genommen reicht mir irgendein Datum der vorhandenen Zeitangaben.
Post by David Haller
utcoffset=$(date -d "$date" '+0%z/100' | bc \
| sed 's/^\([0-9]\)/+\1/;y/+-/-+/;s/$/h/;' )
echo "$utcoffset"
-2h

Was ist da der Vorteil, gegenüber meiner Variante der Zuordnung von
CEST und CET?

Nehmen wir mal an ich würde bei einer Reise eine Zeitzone
überschreiten, dann würde es sowieso kompliziert und in diesem Fall
würde ich zu 99% das Handy als GPS gar nicht verwenden, sondern mein
WBT 201 und das zeichnet in UTC auf.

Zur Zeit argwöhne ich, dass Sportstracker die Zeit des Handys
verwendet und nicht die Zeit des GPS-Signals. Ich habe da einige
deutliche Abweichungen festgestellt.

Al
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2010-09-26 07:11:47 UTC
Permalink
Hallo,
Post by Al Bogner
echo "$date"
2010-08-26T18:02:49.06
cat "$gpxfile" | grep time | head -n 1| cut -c7-25
2010-08-26T18:02:49
Warum sollte da ein Unterschied sein?
Du kannst dich schlicht nicht darauf verlassen, daß das '>' von
'<time>' immer das Zeichen 6 ist.

Wenn's dir lieber ist, kannst du auch sed verwenden (ungetestet):

sed -n '/<time>/s|<time>\([^<]*\)</time>|\1|p' "$gpxfile"

HTH,
-dnh
--
"`Ford, you're turning into a penguin. Stop it.'" -THHGTTG
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Loading...