Aktuelle Zeit: 24.09.2020 16:20

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 31.12.2019 09:24 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,

gibt es auch eine Möglickeit einen Kalendermonat, über ein beliebiges Datum aus dem System auszulesen? Damit hätte ich gleich den richtigen Monatsnamen nach jeweiligen Sprachpaket von Windows!

Ähnlich den Beispiel:

Code:
Procedure.s GetDayMonth()
  Protected ST.SYSTEMTIME
  Protected Buffer.s = Space(#MAX_PATH + 1)
  GetSystemTime_(@ST)
  If GetDateFormat_(#Null,#DATE_LONGDATE,@ST,#Null,@Buffer,#MAX_PATH)
    ProcedureReturn Buffer
  EndIf
EndProcedure
Debug GetDayMonth()


... jedoch mit

Code:
GetDayMonth(12.03.2020)

... März

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  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 31.12.2019 12:23 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Da steht doch alles!
Setze einfach ST entsprechend.

_________________
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: 02.01.2020 15:06 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,
habe die Sache Dank "ts-soft" und
https://www.purebasic.fr/german/viewtopic.php?f=6&t=2060
gelöst!

Hier das Beispiel:

Code:
; in PB vordefiniert
; Structure SYSTEMTIME
; wYear.w
; wMonth.w
; wDayOfWeek.w
; wDay.w
; wHour.w
; wMinute.w
; wSecond.w
; wMilliseconds.w
; EndStructure


Global Kalender_Zeiger
Global Dim Kalender_Monat$(12)
Global Dim Kalender_Tag_Nr(12)
Global KalenderTagDerWoche
Global KalenderTagDerWoche$

Procedure.s GetDayMonth()
  ; ---------------------
  Define st.SYSTEMTIME, sDate.s{261}
  ; ---------------------
  ; Klartext MONAT
  GetSystemTime_(@st)
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"MMMM", @sDate, 260)
  Kalender_Monat$(Kalender_Zeiger) = sDate
  ; ---------------------
EndProcedure
Procedure.s GetKalender()
  Protected aktuellYear.w
  Protected aktuellMonth.w
  Protected aktuellDay.w
 
  Protected aktuellwHour.w
  Protected aktuellwMinute.w
  Protected aktuellwSecond.w
 
  ; variable für Systemtime deklarieren
  STime.SYSTEMTIME
 
  ; aktuelle Systemzeit ermitteln (Struktur füllen)
  GetSystemTime_(STime)
  Debug "Wir haben das Jahr " + Str(STime\wYear)
  Debug "Es ist der " + Str(STime\wMonth) + " Monat in diesem Jahr"
 
  ; aktuelles Jahr sichern
  aktuellYear.w = STime\wYear
  aktuellMonth.w = STime\wMonth
  aktuellDay.w = STime\wDay
  aktuellwHour.w = STime\wHour
  aktuellwMinute.w = STime\wMinute
  aktuellwSecond.w = STime\wSecond
 
  For Kalender_Zeiger = 1 To 12
    ; Systemuhr auf 2010 setzen
    STime\wYear = aktuellYear
    STime\wMonth = Kalender_Zeiger
    STime\wDay = 01
    SetLocalTime_(STime)
    Kalender_Tag_Nr(Kalender_Zeiger) = DayOfWeek(Date(2020, Kalender_Zeiger, 1, 0, 0, 0)) 
    GetDayMonth()
  Next
 
  ; Delay(10000)
 
  ; Systemzeit zurückstellen
  STime\wYear = aktuellYear
  STime\wMonth = aktuellMonth
  STime\wDay = aktuellDay
 
  STime\wHour = aktuellwHour + 1
  STime\wMinute = aktuellwMinute
  STime\wSecond = aktuellwSecond
 
  SetLocalTime_(STime)
  Debug "Wir haben wieder das Jahr " + Str(STime\wYear)
  Debug "--------------------------------------"
EndProcedure
GetKalender()

For Kalender_Zeiger = 1 To 12
  Debug "Kalender_Monat$ = " + Kalender_Monat$(Kalender_Zeiger)
  KalenderTagDerWoche = Kalender_Tag_Nr(Kalender_Zeiger)
  If KalenderTagDerWoche = 0
    KalenderTagDerWoche$ = "So"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 1
    KalenderTagDerWoche$ = "Mo"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 2
    KalenderTagDerWoche$ = "Di"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 3
    KalenderTagDerWoche$ = "Mi"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 4
    KalenderTagDerWoche$ = "Do"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 5
    KalenderTagDerWoche$ = "Fr"
    ; ----------------------------------------------
  ElseIf KalenderTagDerWoche = 6
    KalenderTagDerWoche$ = "Sa"
    ; ----------------------------------------------
  EndIf
  ; ----------------------------------------------
  Debug " Der 1. fällt auf = " + KalenderTagDerWoche$
Next


Allen Pure Tüfftlern ein gutes neues JAHR 2020!

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  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 02.01.2020 16:27 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
:freak:

_________________
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: 02.01.2020 18:24 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,
die 'Sache funzt unter Windows 7 aber nicht unter 8.1/10!

Code:
; ts-soft    

; https://www.purebasic.fr/german/viewtopic.php?f=6&t=2060

; in PB vordefiniert
; Structure SYSTEMTIME
  ; wYear.w
  ; wMonth.w
  ; wDayOfWeek.w
  ; wDay.w
  ; wHour.w
  ; wMinute.w
  ; wSecond.w
  ; wMilliseconds.w
; EndStructure
Global Aktuelles_Monat$

Procedure.s GetDayMonth()
  Protected ST.SYSTEMTIME
  Protected Buffer.s = Space(#MAX_PATH + 1)
  GetSystemTime_(@ST)
  If GetDateFormat_(#Null,#DATE_LONGDATE,@ST,#Null,@Buffer,#MAX_PATH)
    ProcedureReturn Buffer
  EndIf
EndProcedure

; variable für Systemtime deklarieren
STime.SYSTEMTIME

; aktuelle Systemzeit ermitteln (Struktur füllen)
GetSystemTime_(STime)
Debug "Wir haben das Jahr " + Str(STime\wYear)
Debug "Es ist der " + Str(STime\wMonth) + " Monat in diesem Jahr"

; aktuelles Jahr sichern
aktuellYear.w = STime\wYear
aktuellMonth.w = STime\wMonth
aktuellDay.w = STime\wDay

For K = 1 To 12
; Systemuhr auf 2010 setzen
; STime\wYear = 2020
STime\wMonth = K
STime\wDay = 01

SetLocalTime_(STime)

Debug ""
Debug "Wir haben das Jahr " + Str(STime\wYear)
Debug "Wir haben das Month " + Str(STime\wMonth)
Debug "Wir haben das wDay " + Str(STime\wDay)
Debug "Wir haben das Day " + Str(STime\wDayOfWeek)

Debug GetDayMonth()
; ein bißchen warten
Delay(1000)
Next
Delay(10000)

; Systemzeit zurückstellen
STime\wYear = aktuellYear
STime\wMonth = aktuellMonth
STime\wDay = aktuellDay
SetLocalTime_(STime)
Debug "Wir haben wieder das Jahr " + Str(STime\wYear)



Jemand eine Ahnung, warum man nur "<J>anuar" zurück bekommt!

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  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 02.01.2020 19:35 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Velindos hat geschrieben:
Hallo Leute,

gibt es auch eine Möglickeit einen Kalendermonat, über ein beliebiges Datum aus dem System auszulesen? Damit hätte ich gleich den richtigen Monatsnamen nach jeweiligen Sprachpaket von Windows!

Warum machst du so umständliche Sachen, wenn es doch nur darum geht die Monatsnamen in der jeweiligen Sprache zu bekommen?

Ich mache das so (unter Windows):
Code:
EnableExplicit

Procedure.s LocalizedMonthName (MonthOfYear.i, short.i=#False)
   Protected fmt.i, buffer$, bufferSize.i=80
   
   If short
      fmt = #LOCALE_SABBREVMONTHNAME1
   Else
      fmt = #LOCALE_SMONTHNAME1
   EndIf
   
   buffer$ = Space(bufferSize)
   GetLocaleInfo_(#LOCALE_USER_DEFAULT, fmt + MonthOfYear - 1, @buffer$, bufferSize)
   
   ProcedureReturn buffer$
EndProcedure


; Demo
Define month

For month = 1 To 12
   Debug LocalizedMonthName(month)
Next   

Debug ""

For month = 1 To 12
   Debug LocalizedMonthName(month, #True)
Next

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 02.01.2020 20:05 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Alles sehr verwirrend.

Simple:

Code:
Procedure.s GetDayMonth(SysTime.s)
  Protected ST.SYSTEMTIME
  Protected Buffer.s{10}
  Protected Pattern.s = "MMMM"
  ST\wDay = Val(StringField(SysTime, 1, "."))
  ST\wMonth = Val(StringField(SysTime, 2, "."))
  ST\wYear = Val(StringField(SysTime, 3, "."))
  If GetDateFormat_(#Null,#Null,@ST,@Pattern, @Buffer, SizeOf(Buffer))
    ProcedureReturn Buffer
  EndIf
EndProcedure
Debug GetDayMonth("12.09.2020")

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.2 / Android 7.0 ;)


Zuletzt geändert von ccode_new am 02.01.2020 21:07, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 02.01.2020 20:19 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Du must ein Speicherplatz für den String übergeben...
Code:
Procedure.s GetDayMonth(SysTime.s)
  Protected ST.SYSTEMTIME
  Protected Buffer.s = Space(80)
  Protected Pattern.s = "MMMM"
  ST\wDay = Val(StringField(SysTime, 1, "."))
  ST\wMonth = Val(StringField(SysTime, 2, "."))
  ST\wYear = Val(StringField(SysTime, 3, "."))
  If GetDateFormat_(#LOCALE_USER_DEFAULT,#Null,@ST,@Pattern, @Buffer, Len(Buffer))
    ProcedureReturn Buffer
  EndIf
EndProcedure
Debug GetDayMonth("12.10.2020")

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - 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


Zuletzt geändert von mk-soft am 02.01.2020 20:23, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kalender Monat in Klartext vom Sytem
BeitragVerfasst: 02.01.2020 20:21 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Im CodeArchiv ist auch noch ein Include-Code, der neben Windows auch Linux und MacOS unterstützt: FormatDateEx.pbi
Beispiele gibt es ganz unten im Code.

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download – Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


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

Registriert: 15.11.2010 10:56
Hallo Leute!

Zitat:
"Warum machst du so umständliche Sachen,
wenn es doch nur darum geht die Monatsnamen in der jeweiligen Sprache zu bekommen?"

Naja, weil ich jeden Tag hunterte Kalender programmiere und somit reichlich an Arbeit sammle!

Spass ohne, Danke für eure Vorschläge, vereinfachen die Sache ungemein!
Zur Zeit Lese ich das aktuelle Systemdatum mit dieser Procedure aus!

Code:
  EnableExplicit
Procedure.s Get_System_Datum_Aktuell()
  ; ---------------------
  Define st.SYSTEMTIME, sDate.s{261}
  ; ---------------------
  ; Klartext MONAT
  GetSystemTime_(@st)
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"yyyy", @sDate, 260)
  Global Aktuelles_Jahr$ = sDate
  Global Aktuelles_Jahr = Val(sDate)
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"MMMM", @sDate, 260)
  Global Aktuelles_Monat$ = sDate
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"MM", @sDate, 260)
  Global Aktuelles_Monat_Nr = Val(sDate)
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"dddd", @sDate, 260)
  Global Aktuelles_Tag$ = sDate
  ; ---------------------
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"d", @sDate, 260)
  Global Aktuelles_Tag_Nr$ = sDate
  ; ---------------------
  ; GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"dddd, d.MMMM yyyy", @sDate, 260)
  GetDateFormat_(#LOCALE_USER_DEFAULT, 0, @st, @"dddd, d.MMMM ", @sDate, 260)
  Global Aktuelles_Datum$ = sDate
  ; ---------------------
  ProcedureReturn Aktuelles_Datum$
EndProcedure

Debug Get_System_Datum_Aktuell()

Debug "Aktuelles_Jahr$    = " + Aktuelles_Jahr$
Debug "Aktuelles_Jahr     = " + Aktuelles_Jahr
Debug "Aktuelles_Monat$   = " + Aktuelles_Monat$
Debug "Aktuelles_Monat_Nr = " + Aktuelles_Monat_Nr
Debug "Aktuelles_Tag$     = " + Aktuelles_Tag$
Debug "Aktuelles_Tag_Nr$  = " + Aktuelles_Tag_Nr$


Was mir aber fehlt ist die Anzahl der Tage eines Monates, ählich

AnzahlTage = GiveDayOfMont(Date(JJahr,MMonat,TTag, 0, 0, 0))

Gibt es dafür Unterstützung vom System her?


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 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 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