Am Fr, 24 Sep 2010 22:06:16 CEST schrieb David Haller: Hallo David,
Am Fre, 24 Sep 2010, Al Bogner schrieb:
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
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+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org