Archiv verlassen und diese Seite im Standarddesign anzeigen : Monatsabfrage??
Hallo!
Ich will eins script erstellen das mir automatisch überwacht wieviel ich von meinen 90 Stunden im Monat (Ich hab den 90 Stunden Tarief der Deutschen Telekom) ich schon versurft hab und wieviel ich nochübrig hab. Ich hab schon eine Stoppuhr gebaut die immer die Aktuelle Zeit in Sekunden in eine Datei schreibt und die ich dann nur auslesen muss. Mein Problem ist nun noch wie kann ich es rausfinden wieviele Tage der Monatnoch hat oder wieviele er insgesammt hat?? Ich arbeite mit Linux Suse 7.3 Evt mit Date oder ähnlichem??
MFG
Maruu
anda_skoa
07-09-2002, 19:26
Wahrscheinlich gibt es eine einfacher Lösung, aber mal als Anfang
case $(date +%m) in
2) DAYS=28 ;;
4) DAYS=30 ;;
6) DAYS=30 ;;
9) DAYS=30 ;;
11) DAYS=30 ;;
*) DAYS=31 ;;
esac
Bei Februar müßte man noch Schaltjahre berücksichtigen.
Ciao,
_
hy ja sowas hab ich mir auch schon überlegtr aber was ist in Schaltjahren usw da muss ich so viel schrieben oder es ändern usw. Vielleicht weiß ja jemand ne einfachere Lösung.
MFG
Maruu
http://www.rpmfind.net/linux/rpm2html/search.php?query=monopoly
anda_skoa
07-09-2002, 20:36
man könnte im case für 2 folgendes machen
2) DATE=$(date +%Y)-02-29
if [ $(date --date=$DATE +%d) -eq 29 ]; then DAYS=29; else DAYS=28; fi
;;
Wenn es nämlich kein Schaltjahr ist, dann wird zB bei date --date=2002-02-29 als Datum der 1. März angezeigt.
Ciao,
_
mehr mit Perl beschaeftige, hier ein Vorschlag von mir:
-----snip-----
#!/usr/bin/perl
use warnings;
use strict;
use Date::Calc qw (:all);
my ( $day, $month, $year, $days, $wieviel);
my ($y, $m, $md) = (localtime(time))[5,4,3];
$day = sprintf "%02d", $md;
$month = sprintf "%02d", $m+1;
$year = sprintf "%d", 1900+$y;
$days = Days_in_Month($year,$month);
$wieviel = $days - $day;
print "Es sind noch ",$wieviel," Tage bis zum Monatsende\n";
-----snap-----
Zeigt zum Schluss an, wieviel Tage der Monat noch hat ;-)
T;o)Mes
P.S.:
Geht bestimmt noch einfacherer, aber ich fange ja gerade erst an mit Perl.
z.B kann man ja alles in einer Zeile deklarieren ;)
werds wohl mit case machen falls mir nix besseres einfällt
Trotzdem Danke
MFG
Maruu
@anda_skoa
Hab das von dir mit dem Schaltjahr mal ausprobiert es geht aber ich versteh ned ganz wies funktioniert kannst dus mal genau kommentieren??
Wäre echt nett
MFG
Maruu
anda_skoa
08-09-2002, 23:19
2) DATE=$(date +%Y)-02-29
if [ $(date --date=$DATE +%d) -eq 29 ]; then DAYS=29; else DAYS=28; fi
;;
Zuerst wird ein String erzeugt, der aus dem aktuellen Jahr und -02-29 besteht. Also 29. Februar des aktuellen Jahres.
date --date=$DATE sagt date, dass es den String von $DATE als Datum nehmen solll.
Es wird praktisch temporär das Datum auf 29. Feb das aktuellen Jahres gesetzt.
Wenn das Jahr kein Schaltjar ist, so wie heuer, dann gibt date als Datum den 1. März aus.
(Einfach mal date --date=2002-02-29 probieren)
Das +%d weißt date an, das vom Datum nur den Tag auszugeben.
Wenn es ein Schaltjahr ist, dann konnte date das Datum 29.2 benutzen, der ausgegeben Tag ist also 29.
Bei normalen jahren wird, wie oben beschrieben, der 1. März gesetzt, der ausgegeben tag ist also 1.
Mit -eq 29 wird abgefragt ob der ausgegeben Tag 29 ist.
Man könnte natürlich zB auch -eq 1 schreiben und bei then DAYS=28 und bei else DAYS=29 schreiben.
hth,
_
Danke habs kapiert Super Service echt.
MFG
Maruu
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.