Aktuelle Zeit: 09.07.2020 11:42

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 11:55 
Offline
Benutzeravatar

Registriert: 28.07.2005 12:39
Erster Tag im Monat - 1

gruss

_________________
Suche


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 15:29 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Velindos hat geschrieben:
Zur Zeit Lese ich das aktuelle Systemdatum mit dieser Procedure aus!

Ich würde dazu PureBasics Date()-Funktion verwenden.

Velindos hat geschrieben:
Was mir aber fehlt ist die Anzahl der Tage eines Monates

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.

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 16:36 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Da braucht man doch keine Tabelle, Edel hat doch völlig Recht, mal abgesehen davon, dass es Folgemonat heissen müsste.

Code:
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)

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 16:38 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Hatte ich schon mal gebastelt und wieder verloren ...
Code:
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 / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 16:50 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
@Hexor:
:allright:

Wenn edel etwas ausführlicher geschrieben hätte was er meint, hätte ich es vielleicht verstanden. :-)

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 17:47 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Hier ist mal meine Version :mrgreen:

Code:
;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: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 03.01.2020 22:33 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Ist dir langweilig? :lol:

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 04.01.2020 13:06 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
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!

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google Adsense [Bot] und 11 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye