Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Der erste Tag vom Jahr berechnen

Frage Microsoft Windows Tools

Mitglied: Blueberry

Blueberry (Level 1) - Jetzt verbinden

06.10.2008, aktualisiert 18.10.2012, 5077 Aufrufe, 17 Kommentare

Hallo Zusammen,

Ich sollte den ersten Tag des Jahres wissen.

Input: Datum (DD.MM.JJJJ)
Output: Wochenzahl

Die eingabe habe ich bereits ich weiss auch welcher Tag das es ist und die Wochennummer hab ich im grössten Teil auch, aber:

Ich sollte wissen wieviele Tage ich dazurechnen muss, damit die Wochennummer stimmt wie kann ich das machen ?

Danke für die Hilfe !

Mit freundlichen Grüssen

Blueberry

[EDIT] Das richtige Thema ist etwas weiter unten da ich hier eigtl. nur quatsch geschrieben habe [/EDIT]
Mitglied: miniversum
06.10.2008 um 13:55 Uhr
Welche Programmiersprache?
Bitte warten ..
Mitglied: AndreasHoster
06.10.2008 um 13:59 Uhr
???
Die Fragestellung ist nicht ganz klar.
Ich sollte den ersten Tag des Jahres wissen.
Wie wäre es mit dem 1 Januar?
Ich sollte wissen wieviele Tage ich dazurechnen muss, damit die
Wochennummer stimmt wie kann ich das machen ?
Was meinst Du mit dazurechnen damit die Wochennummer stimmt?

Wenn ich mal den zum Teil widersprüchlichen Sinn der einzelnen Sätze beiseite lasse und mir aus den Stichworten eine Frage zusammenreimen soll geht es um folgendes Problem:
Dir ist nicht ganz klar ob die Woche, die vor dem 1 Januar anfängt und nach dem 1 Januar zuende ist die erste oder eventuell die 52/53 KW ist.
Ist diese Vermutung richtig oder nicht?
Wenn nicht, bitte eine verstehbare Frage stellen.
Bitte warten ..
Mitglied: Blueberry
06.10.2008 um 14:18 Uhr
Die Sprache wäre Batch sry miniversum.

@AndreasHoster

Hallo,
Nein, es is überhaupt nicht wiedersprüchlich;). Ich sollte wissen ob das Jahr mit einem Montag oder Diensttag oder einem Mittwoch etc. beginnt. Damit ich dann den Richtigen Zusatz bei den Tagen machen kann... Aber das wegen dem Zusatz muss dich nicht so interessieren... Ich sollte nur wissen, wie ich herausfinden kann ob es ein Mo oder Di ... oder So ist ^^

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: bastla
06.10.2008 um 15:58 Uhr
Hallo Blueberry!

Die unten stehende Rubrik "Anleitungen zum Thema" ist tatsächlich nicht nur da, um die Seite zu füllen - wenn Du also versuchsweise gleich den ersten Link (zu Bibers Workshop) verwendest ...

Grüße
bastla
Bitte warten ..
Mitglied: AndreasHoster
06.10.2008 um 17:06 Uhr
Das der Wochentag des 1. Januars gefragt war, daß stand nicht in Deinem Text drin.
Und es ist widersprüchlich, oder wie soll ich die zwei Aussagen
Ich sollte den ersten Tag des Jahres wissen
und
ich weiss auch welcher Tag das es ist
Anders als sich widersprechend bezeichnen?
Und was mit Wochennummer gemeint ist, ist auch unklar, auch wenn ich inzwischen vermute, daß damit der Wochentag gemeint ist, also Montag=1, Dienstag=2 etc.
Aber das ist dem Text ohne Raterei nicht zu entnehmen.

Aber zurück zum technischen Problem:
Was Du dazuaddieren willst/sollst wird wohl niemand beantworten können, da niemand weiß nach welchem Algorithmus Du überhaupt den Wochentag ausrechnen willst.
Wenn man in Wikipedia schaut gibts da mehrere Varianten:
Doomsday Algorithmus, Gaußsche Wochentagsformel, Zellersche Kongruenz und jede rechnet sich anders.

Ohne genaue Infos was Dein Problem ist, werde zumindestens ich Dir nicht weiterhelfen können, Hellseherei ist nicht meine Stärke.
Bitte warten ..
Mitglied: 51705
06.10.2008 um 21:31 Uhr
Zitat von miniversum:
Welche Programmiersprache?

Das ist Mathematik, mit der Programmiersprache hat das wenig zu tun...
Bitte warten ..
Mitglied: miniversum
06.10.2008 um 21:40 Uhr
Stimmt im Prinzip schon. Dennoch ist die Frage ncith unerheblich da eine Sprache wie z.B. vbs die möglichkeit besitzt mit einem Datum umzugehenudn fertige funktionen dafür anbietet. Batch besitzt dies nicht.
Bitte warten ..
Mitglied: 51705
06.10.2008 um 21:47 Uhr
Hallo miniversum,

deine Schreibselei ist für mich nicht verständlich (egal ob Batch oder VBS).

Die erste Jahreswoche ist mit mindestens 4 Wochentagen definiert. Darauf aufbauend kann ich doch jedes Datum errechnen.

Grüße, Steffen
Bitte warten ..
Mitglied: bastla
06.10.2008, aktualisiert 18.10.2012
Hallo miniversum und smerlin!

Eigentlich habt Ihr beide recht - Mathematik ist es natürlich immer, nur nimmt VBS einem die Berechnung ab:
01.
WScript.Echo Weekday(#2008-1-1#)
während (wie in Bibers Tutorial gezeigt) die Lösung in Batch "zu Fuß" erfolgen muss:
01.
@echo off & Setlocal 
02.
set /a yy=2008,mm=1,dd=1 
03.
 
04.
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2 
05.
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 
06.
echo %dow%
Anzumerken wäre noch, dass für VBS (defaultmäßig) Sonntag = 1 gilt (lässt sich aber durch den zusätzlichen Parameter "2" auch auf Montag ändern), während in der Batchvariante die 1 für Montag steht ...

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
07.10.2008 um 09:17 Uhr
Hallo Zusammen,

Sry ist wirklich nicht so ganz klar ^^.
Meine Aufgabe ist es einen Batch zu schreiben, der herausfindet zu welcher Kalenderwoche das eingegebene Datum gehört... Das da aber die angaben stimmen, muss ich ja, weil das Jahr nicht immer mit Montag als 01.01 beginnt, einen Abzug oder eine Zugabe machen. Damit ich diese machen kann, muss ich wissen mit welchem Tag, dass das Jahr anfängt damit ich, dass abgleichen kann mit dem Jahr 2007 (Das Jahr 2007 fängt mit einem Montag als 01.01 an), um dann die richtige Zahl zu erhalten. Aber mein Problem ist, dass es vom Jahr 2000 bis 2014 funktioniert, aber dann früher oder später nicht. Ich habe das Problem gelöst indem ich einfach das Jahr minus 2007 gemacht habe und das dann dazu gegeben habe ( kann negative Zahlen ergeben was ganz gut ist damit geht es bis zum Jahr 2000 gut). Aber wenn die Zahl grösser als 7 wird, ist es wieder quatsch, kann ich irgendwie sagen er soll solange 7 abziehen bzw. dazu geben, bis er im bereich von -7 - +7 ist ?
Was ganz oben steht stimmt nicht mehr ganz, weil ich es schon geändert habe...

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: bastla
07.10.2008 um 09:35 Uhr
Hallo Blueberry!

Eigentlich müsste es genügen, 7 abzuziehen, solange das Ergebnis > 7 ist, also etwa:
01.
... 
02.
:Loop 
03.
if %Zahl% gtr 7 ( 
04.
    set /a Zahl-=7 
05.
    goto :Loop 
06.
07.
echo %Zahl%
Besser wäre die "Modulo"-Variante:
01.
set /a Zahl=%Zahl%%%7 
02.
if %Zahl%==0 set Zahl=7
Abgekürzt lässt sich die erste Zeile auch als
01.
set /a Zahl=Zahl%%7
schreiben, wodurch der "Modulo"-Operator "%" (oben in der Schreibweises für die Verwendung innerhalb eines Batches, daher verdoppelt) besser zu erkennen ist (siehe auch "set /?").
Abgesehen davon wäre der verwendete Algorithmus zu überdenken, wenn dieser tatsächlich nur für die Jahre 2000 bis 2014 funktioniert ...

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
07.10.2008 um 09:54 Uhr
Hallo bastla,

Danke für deinen Beitrag,
Ich sollte ihn vom Jahre 0 bis zum Jahre 2014+Unendlich schreiben^^.


Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: Blueberry
07.10.2008 um 10:42 Uhr
Ich glaube ich habe es zum Laufen gebracht... Jetzt muss ich es nur noch Testen.

DANKE AN ALLE DIE GEHOLFEN HABEN!!!!
vorallem Bastla

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: Biber
07.10.2008 um 13:51 Uhr
Moin Blueberry,

Ich sollte ihn vom Jahre 0 bis zum Jahre 2014+Unendlich schreiben^^.
Das wird aus mehreren (praktischen und ganz banalen) Gründen nicht funktionieren.
Unter anderem deshalb, weil wir diesen Kalender noch gar nicht "seit dem Jahr 0" verwenden.

Und wenn weiterhin in derart unverständlichen Dimensionen wie bisher die F.D.P. gewählt wird, dann könnten wir, falls verkaufsoffene Sonntage und Midnight-Shopping nicht mehr ausreichen auch in regional begründeten Ausnahmefällen in ein paar Jahren auch am 32. Februar in den MediaMarkt. Warum soll der Staat immer so viel reglementieren?

Und da weiß noch kein Schwein, wie der Wochentag heißen wird (ich denke "Westerwoch", aber. man/frau weiss es nicht...).

Ein paar leicht verdauliche Algorithmen zur Kalenderproblematik gibt es bei der Uni Bonn.

Was ich damit sagen will: Niemand wird von Dir eine Wochentags/Kalenderwochenberechnung verlangen außerhalb des Zeitraumes 1900 -2100.
Hey, Wochentage davor hat nicht mal Johannes Heesters noch bewusst miterlebt, bestenfalls Maria Hellwig oder Thomas Gottschalk.
Und nach dem Jahr 2100 ist für Dich und auch Deinen Cheffe jeder Tag ein Sonntag - was willst Du da berechnen?

Ich würde an Deiner Stelle (falls sich kein reproduzierbarer Algorithmus ableiten lässt) wie schon einmal vorgeschlagen mit einer kleinen internen Tabelle arbeiten, in der für jedes "interessante" Jahr hinterlegt ist, wie viele Tage plus/minus korrigiert werden müssen bei einer KW-Ermittlung.
Schematisches Beispiel:
1980: +2 
1981: 0 
1982: -3 
... 
... 
2050: 1
Ich glaube ich habe es zum Laufen gebracht... Jetzt muss ich es nur noch Testen.
Bitte gib danach nochmal Feedback - der Beitrag wird ja durchaus interessiert mitgelesen.

Grüße
Biber
Bitte warten ..
Mitglied: Blueberry
08.10.2008 um 11:12 Uhr
Ja, das bis ich ein Feedback habe könnte es Dauern... Ich fange noch einmal von vorne an, aber evtl. hab ich das Heute noch (ich habe jetzt viel mehr Erfahrung als am Anfang dieses Threads ). Und wegen der Tabelle, dass darf ich nicht machen... Mein Lehrmeister will eine rein Batch-programmierte Lösung.

Aber danke schon einmal für die Tipps...

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: bastla
08.10.2008 um 12:19 Uhr
Hallo Sandro!

Und wegen der Tabelle, dass darf ich nicht machen... Mein Lehrmeister will eine rein Batch-programmierte Lösung.
01.
@echo off & setlocal 
02.
REM DATA 1980:+2 
03.
REM DATA 1981:+0 
04.
REM DATA 1982:-3 
05.
REM ... 
06.
 
07.
set "Jahr=1982" 
08.
 
09.
set Korr= 
10.
for /f "tokens=2 delims=:" %%i in ('findstr /c:"REM DATA %Jahr%:" %0') do set "Korr=%%i" 
11.
if defined Korr echo %Korr%
Ist doch ein Batch ...

... aber einen Algorithmus, der ohne die Tabelle auskommt, wirst Du sicher auch finden (und wenn Du in diesem Thread weiter nach oben schauen musst).

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
16.10.2008 um 10:42 Uhr
Hallo Zusammen,

Ich habe das Programm schon fast fertig (bin noch 5 Wochen hintendrein bei der Ausgabe aber egal) Und ja die wird nach den ISO-Vorschriften sein also nicht mit Windows vergleichen, weil die einfach keine Ahnung haben.
[edit1] So den ersten riesen Fehler hab ich mal gefunden, jetzt sind es nicht mehr 5 sondern nur noch 1 Woche die falsch ist, aber das pack ich schon! Jetzt kanns nicht mehr sehr lange gehn .

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Userverwaltung
Erste Anmeldung und letzte Abmeldung pro Tag auflisten (4)

Frage von Codehunter zum Thema Windows Userverwaltung ...

Netzwerke
HTTP Overhead Berechnen und Protokolstack

Frage von karlosss zum Thema Netzwerke ...

Festplatten, SSD, Raid
Speicher der nächsten Jahre berechnen (10)

Frage von Ravers zum Thema Festplatten, SSD, Raid ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...