Kalender Monat in Klartext vom Sytem
Re: Kalender Monat in Klartext vom Sytem
Ich würde dazu PureBasics Date()-Funktion verwenden.Velindos hat geschrieben:Zur Zeit Lese ich das aktuelle Systemdatum mit dieser Procedure aus!
Dazu kann man eine kleine "Tabelle" (in Form eines Array oder von "Select"-Anweisungen) mit zusätzlicher Berücksichtigung der Schaltjahre benutzen. Sowas findet sich mehrfach im Forum.Velindos hat geschrieben:Was mir aber fehlt ist die Anzahl der Tage eines Monates
- HeX0R
- Beiträge: 2959
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: Kalender Monat in Klartext vom Sytem
Da braucht man doch keine Tabelle, Edel hat doch völlig Recht, mal abgesehen davon, dass es Folgemonat heissen müsste.
Code: Alles auswählen
Procedure GetDaysOfMonth(year, month)
Protected Result
If month = 12
month = 0
year + 1
EndIf
month + 1
Result = Day(Date(year, month, 1, 0, 0, 0) - 1)
ProcedureReturn Result
EndProcedure
Debug GetDaysOfMonth(2020, 2)
Debug GetDaysOfMonth(2019, 2)
Debug GetDaysOfMonth(2020, 12)
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: Kalender Monat in Klartext vom Sytem
Hatte ich schon mal gebastelt und wieder verloren ...
Code: Alles auswählen
Procedure DayOfMonth(Date)
Protected date2, year, month
year = Year(date)
month = Month(date)
If month < 12
month + 1
Else
Month = 1
EndIf
date2 = Date(year, month, 1, 0, 0, 0) - 86400
ProcedureReturn Day(date2)
EndProcedure
Debug DayOfMonth(Date(2020, 2, 15,0 ,0 ,0 ))
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Kalender Monat in Klartext vom Sytem
@Hexor:
Wenn edel etwas ausführlicher geschrieben hätte was er meint, hätte ich es vielleicht verstanden.
Wenn edel etwas ausführlicher geschrieben hätte was er meint, hätte ich es vielleicht verstanden.
Re: Kalender Monat in Klartext vom Sytem
Hier ist mal meine Version
Code: Alles auswählen
;untrustworthy
;keine Gewähr
Procedure.s Konvertiere_den_Datumswert(Datumswert.i) ;Konvertierungsfunktion
Protected.s ein_Datum
If Datumswert <> -1
ein_Datum = RSet(Str(Day(Datumswert)), 2, "0") + "." + RSet(Str(Month(Datumswert)), 2, "0") + "." + Str(Year(Datumswert))
ProcedureReturn ein_Datum
Else
ProcedureReturn "Du hast ein ungültiges Datum eingegeben."
EndIf
EndProcedure
Procedure.s Sage_mir_den_Monatsnamen(Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben.s) ;Anbei: Wieviel Speicher benötigt wohl mein Variablenname?
Protected.SYSTEMTIME ST
Protected.s ein_Datum = Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben
Protected.s{10} Speicher_Puffer
ST\wDay = Val(StringField(ein_Datum, 1, "."))
ST\wMonth = Val(StringField(ein_Datum, 2, "."))
ST\wYear = Val(StringField(ein_Datum, 3, "."))
If GetDateFormat_(#Null, #Null, @ST, @"MMMM", @Speicher_Puffer, SizeOf(Speicher_Puffer))
ProcedureReturn Speicher_Puffer
Else
ProcedureReturn "Du hast ein ungültiges Datum eingegeben."
EndIf
EndProcedure
Procedure.i Zaehle_die_Tage_im_Monat(Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben.s)
Protected.SYSTEMTIME ST
Protected.s ein_Datum = Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben
Protected.i ein_Datumswert
ST\wDay = 1
ST\wMonth = Val(StringField(ein_Datum, 2, "."))
ST\wYear = Val(StringField(ein_Datum, 3, "."))
ein_Datumswert = Date(ST\wYear, ST\wMonth, ST\wDay, 0, 0, 0)
If ein_Datumswert <> -1
If ST\wMonth = 12
ST\wYear + 1
ST\wMonth = 1
Else
ST\wMonth + 1
EndIf
ein_Datumswert = Date(ST\wYear, ST\wMonth, ST\wDay, 0, 0, 0) - 1
If ein_Datumswert > 0
ProcedureReturn Day(ein_Datumswert)
EndIf
Else
ProcedureReturn -1 ;"= Du hast ein ungültiges Datum eingegeben."
EndIf
EndProcedure
Procedure.b Ist_es_ein_Schaltjahr(jahr)
If Date(jahr, 2, 29, 0, 0, 0) <> -1
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.i Sage_mir_die_Kalenderwoche(Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben.s) ;Industrienorm DIN 1355
Protected.SYSTEMTIME ST
Protected.s ein_Datum = Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben
Protected.i ein_Datumswert
Protected.i aktueller_Tach
Protected.i Wochentach1Jan
Protected.s neues_Datum
Protected.i Kalenderwoche
Protected.b IstSchaltjahr
ST\wDay = Val(StringField(ein_Datum, 1, "."))
ST\wMonth = Val(StringField(ein_Datum, 2, "."))
ST\wYear = Val(StringField(ein_Datum, 3, "."))
ein_Datumswert = Date(ST\wYear, ST\wMonth, ST\wDay, 0, 0, 0)
If ein_Datumswert <> -1
aktueller_Tach = DayOfYear(ein_Datumswert)
Wochentach1Jan = DayOfWeek(Date(ST\wYear, 1, 1, 0, 0, 0))
If Wochentach1Jan >= 5
Wochentach1Jan - 7
EndIf
If (aktueller_Tach + Wochentach1Jan) <= 1
neues_Datum = "31.12."+Str((ST\wYear - 1))
ProcedureReturn Sage_mir_die_Kalenderwoche(neues_Datum)
EndIf
Kalenderwoche = ((aktueller_Tach + Wochentach1Jan + 5) / 7)
If Kalenderwoche >= 1 And Kalenderwoche <= 53
If Kalenderwoche = 53
IstSchaltjahr = Ist_es_ein_Schaltjahr(ST\wYear)
If Not( (Wochentach1Jan = 4) Or (Wochentach1Jan = -3) Or ((Wochentach1Jan = 3) And IstSchaltjahr) Or ((Wochentach1Jan = -4) And IstSchaltjahr) )
Kalenderwoche = 1
EndIf
EndIf
ProcedureReturn Kalenderwoche
EndIf
Else
ProcedureReturn -1 ;"= Du hast ein ungültiges Datum eingegeben."
EndIf
EndProcedure
Procedure.s Sage_mir_den_Wochentag(Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben.s)
Protected.SYSTEMTIME ST
Protected.s ein_Datum = Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben
Protected.s{10} Speicher_Puffer
ST\wDay = Val(StringField(ein_Datum, 1, "."))
ST\wMonth = Val(StringField(ein_Datum, 2, "."))
ST\wYear = Val(StringField(ein_Datum, 3, "."))
If GetDateFormat_(#Null, #Null, @ST, @"dddd", @Speicher_Puffer, SizeOf(Speicher_Puffer))
ProcedureReturn Speicher_Puffer
Else
ProcedureReturn "Du hast ein ungültiges Datum eingegeben."
EndIf
EndProcedure
Procedure Orakel(Anweisung.s, Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben.s)
Protected.i jahr, tag, monat
Protected.s ein_Datum = Bitte_ein_Datum_im_Format_DD_MM_JJJJ_eingeben
tag = Val(StringField(ein_Datum, 1, "."))
monat = Val(StringField(ein_Datum, 2, "."))
jahr = Val(StringField(ein_Datum, 3, "."))
Protected.i ein_Datumswert
ein_Datumswert = Date(jahr, monat, tag, 0, 0, 0)
If ein_Datumswert <> -1
Select Anweisung
Case "Sage_mir_den_Monatsnamen"
MessageRequester("Das Orakel antwortet:", "Das Datum liegt im "+ Sage_mir_den_Monatsnamen(ein_Datum) + ".", #PB_MessageRequester_Info)
Case "Sage_mir_den_Wochentag"
MessageRequester("Das Orakel antwortet:", "Dieses Datum fällt auf einen "+ Sage_mir_den_Wochentag(ein_Datum) + ".", #PB_MessageRequester_Info)
Case "Zaehle_die_Tage_im_Monat"
MessageRequester("Das Orakel antwortet:", "Der Monat hat maximal " + Str(Zaehle_die_Tage_im_Monat(ein_Datum)) +" Tage.", #PB_MessageRequester_Info)
Case "Sage_mir_die_Kalenderwoche"
If Sage_mir_die_Kalenderwoche(ein_Datum) >= 52 And monat = 1
jahr - 1
MessageRequester("Das Orakel antwortet:", "Diese ist die " + Sage_mir_die_Kalenderwoche(ein_Datum) + ". KW vom Jahr " + Str(jahr) + ".", #PB_MessageRequester_Info)
ElseIf Sage_mir_die_Kalenderwoche(ein_Datum) = 1 And monat = 12
jahr + 1
MessageRequester("Das Orakel antwortet:", "Diese ist die " + Sage_mir_die_Kalenderwoche(ein_Datum) + ". KW vom Jahr " + Str(jahr) + ".", #PB_MessageRequester_Info)
Else
MessageRequester("Das Orakel antwortet:", "Dies ist die " + Sage_mir_die_Kalenderwoche(ein_Datum) + ". KW im Jahr " + Str(jahr) + ".", #PB_MessageRequester_Info)
EndIf
Case "Ist_das_ein_Schaltjahr"
If Ist_es_ein_Schaltjahr(jahr)
MessageRequester("Das Orakel antwortet:", "Dies ist ein Schaltjahr.", #PB_MessageRequester_Info)
Else
MessageRequester("Das Orakel antwortet:", "Dies ist kein Schaltjahr.", #PB_MessageRequester_Info)
EndIf
Default
MessageRequester("Das Orakel antwortet:", "Deine Anweisung war undeutlich.", #PB_MessageRequester_Info)
EndSelect
Else
MessageRequester("Das Orakel antwortet:", "Ich kann mit deinem Datum nichts anfangen.", #PB_MessageRequester_Info)
EndIf
EndProcedure
;-Frage das Orakel
Global.s akt_Datum = Konvertiere_den_Datumswert(Date())
Orakel("Sage_mir_den_Monatsnamen", akt_Datum)
Orakel("Sage_mir_den_Wochentag", akt_Datum)
Orakel("Zaehle_die_Tage_im_Monat", akt_Datum)
Orakel("Sage_mir_die_Kalenderwoche", akt_Datum)
Orakel("Ist_das_ein_Schaltjahr", akt_Datum)
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- HeX0R
- Beiträge: 2959
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 - Kontaktdaten:
Re: Kalender Monat in Klartext vom Sytem
Ist dir langweilig?
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
Re: Kalender Monat in Klartext vom Sytem
Hallo Leute,
gleich vor ab, besten DANK für eure Unterstützung und lebhafte Diskusion!
Ansatz war das ich mir die Tabelle erspare was nun der Fall ist.
Jetzt ist mein Kalender für 2020 gerüstet ...
Noch ein gutes und gruss ... Velindos!
gleich vor ab, besten DANK für eure Unterstützung und lebhafte Diskusion!
Ansatz war das ich mir die Tabelle erspare was nun der Fall ist.
Jetzt ist mein Kalender für 2020 gerüstet ...
Noch ein gutes und gruss ... Velindos!
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)