DAYOFWEEK/de
Contents |
Funktion
Gibt den Wochentag für ein Datum zurück.
Syntax
Target = DayOfWeek()
Target = DayOfWeek(bDayMonthYear)
Target = DayOfWeek(strDate)
Target = DayOfWeek(wSysDay)
Target = DayOfWeek(lSysSec)
Anmerkungen
Target |
Bytevariable der die Nummer des Wochentags zugewiesen wird. |
BDayMonthYear |
Bytevariable, die den Tag enthält - gefolgt vom Monat (Byte) und Jahr (Byte) |
StrDate |
String der das Datum als Zeichenkette enthält im Format wie im CONFIG DATE Befehl beschreiben.
|
WSysDay |
Wordvariable die den Systemtag (SysDay) enthält. |
LSysSec |
Longvariable die die Systemsekunde (SysSec) enthält. |
Die Funktion kann mit fünf verschiedenen Arten von Input benutzt werden:
1. | Ohne Parameter. Die internen Werte der SOFTCLOCK (_day, _month, _year) werden benutzt. |
2. | Mit einem benutzerdefinierten Array. Dieses muss in derselben Art angeordnet sein (Day, Month, Year) wie das interne SOFTCLOCK-Datum. Das erste Byte (Day) ist der Eingabewert bei dieser Art der Benutzung. Auf diese Weise kann der Wochentag für jedes Daum berechnet werden. |
3. | Mit einem Datums-String. Der Datums-String muss im selben Format wie im CONFIG DATE Befehl angegeben werden. |
4. | Mit einer Systemtag-Zahl. |
5. | Mit einer Systemsekunden-Zahl. |
Der Rückgabewert ist im Bereich 0 bis 6 wobei dem Montag eine 0 entspricht.
Die Funktion funktioniert im 21. Jahrhundert(von 1.1.2000 bis 31.12.2099).
Siehe auch
Date and Time routines , CONFIG DATE , CONFIG CLOCK, SYSDAY, SYSSEC
Beispiel
'----------------------------------------------------------------------------------------- 'name : datetime_test1.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : show how to use the Date-Time routines from the DateTime.Lib 'micro : Mega103 'suited for demo : no 'commercial addon needed : no '----------------------------------------------------------------------------------------- $regfile = "m103def.dat" ' Mikrocontroller $crystal = 4000000 ' Taktfrequenz $baud = 19200 ' Baudrate $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space Const Clockmode = 1 'use i2c for the clock #if Clockmode = 1 Config Clock = Soft ' Interne Softclock benutzen Disable Interrupts #else Config Clock = User ' I2C Clock benutzen 'scl und sda Pins definieren Config Sda = Portd.6 Config Scl = Portd.5 'Addresse des ds1307 Const Ds1307w = &HD0 ' Addressen der Ds1307 Clock Const Ds1307r = &HD1 #endif 'DAtumsformat konfigurieren Config Date = Ymd , Separator = - ' ANSI-Format 'Dieses Beispiel startet die Clock nicht. Die Interrupts werden nicht enabled ' Enable Interrupts 'VAriablen dimensionieren Dim Lvar1 As Long Dim Mday As Byte Dim Bweekday As Byte , Strweekday As String * 10 Dim Strdate As String * 8 Dim Strtime As String * 8 Dim Bsec As Byte , Bmin As Byte , Bhour As Byte Dim Bday As Byte , Bmonth As Byte , Byear As Byte Dim Lsecofday As Long Dim Wsysday As Word Dim Lsyssec As Long Dim Wdayofyear As Word ' =================== DayOfWeek ============================================= ' Beispiel 1 mit interner RTC-Clock _day = 4 : _month = 11 : _year = 2 ' Beispielwerte zuweisen Bweekday = Dayofweek() Strweekday = Lookupstr(bweekday , Weekdays) Print "Wochentag von " ; Date$ ; " ist " ; Bweekday ; " = " ; Strweekday ' Beispiel 2 mit benutzerdefinierten Clock-Bytes (Day / Month / Year) Bday = 26 : Bmonth = 11 : Byear = 2 Bweekday = Dayofweek(bday) Strweekday = Lookupstr(bweekday , Weekdays) Strdate = Date(bday) Print "Wochentag von Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " ist " ; Bweekday ; " (" ; Date(bday) ; ") = " ; Strweekday ' Beispiel 3 mit Systemtag Wsysday = 2000 ' das ist der 23.6.2005 Bweekday = Dayofweek(wsysday) Strweekday = Lookupstr(bweekday , Weekdays) Print "Wochentag von Systemtag " ; Wsysday ; " (" ; Date(wsysday) ; ") ist " ; Bweekday ; " = " ; Strweekday ' Beispiel 4 mit Systemsekunde Lsyssec = 123456789 ' das ist 29.11.2003 um 21:33:09 Bweekday = Dayofweek(lsyssec) Strweekday = Lookupstr(bweekday , Weekdays) Print "Wochentag von Systemsekunde " ; Lsyssec ; " (" ; Date(lsyssec) ; ") ist " ; Bweekday ; " = " ; Strweekday ' Beispiel 5 mit Datums-String Strdate = "04-11-02" ' wir haben das Datum im ANSI-Format definiert Bweekday = Dayofweek(strdate) Strweekday = Lookupstr(bweekday , Weekdays) Print "Wochentag von" ; Strdate ; " ist " ; Bweekday ; " = " ; Strweekday ' ================= Second of Day ============================================= ' Beispiel 1 mit interner RTC-Clock _sec = 12 : _min = 30 : _hour = 18 ' Interne Clockwerte zuweisen Lsecofday = Secofday() Print "Sekunde des Tages von " ; Time$ ; " ist " ; Lsecofday ' Beispiel 2 mit benutzerdefinierter Clock - Bytes (Second / Minute / Hour) Bsec = 20 : Bmin = 1 : Bhour = 7 Lsecofday = Secofday(bsec) Print "Second of Day von Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(bsec) ; ") ist " ; Lsecofday ' Beispiel 3 mit Systemsekunde Lsyssec = 1234456789 Lsecofday = Secofday(lsyssec) Print "Second of Day von Systemsekunde " ; Lsyssec ; "(" ; Time(lsyssec) ; ") ist " ; Lsecofday ' Beispiel 4 mit Zeit-String Strtime = "04:58:37" Lsecofday = Secofday(strtime) Print "Second of Day von " ; Strtime ; " ist " ; Lsecofday ' ================== System Second ============================================ ' Beispiel 1 mit interner RTC-Clock ' Testwerte zuweisen _sec = 17 : _min = 35 : _hour = 8 : _day = 16 : _month = 4 : _year = 3 Lsyssec = Syssec() Print "Systemsekunde von " ; Time$ ; " at " ; Date$ ; " ist " ; Lsyssec ' Beispiel 2 wmit benutzerdefinierten Clock-Bytes (Second, Minute, Hour, Day / Month / Year) Bsec = 20 : Bmin = 1 : Bhour = 7 : Bday = 22 : Bmonth = 12 : Byear = 1 Lsyssec = Syssec(bsec) Strtime = Time(bsec) Strdate = Date(bday) Print "Systemsekunde von" ; Strtime ; " at " ; Strdate ; " ist " ; Lsyssec ' Beispiel 3 mit Systemtag Wsysday = 2000 Lsyssec = Syssec(wsysday) Print "Systemsekunde von System Day " ; Wsysday ; " (" ; Date(wsysday) ; " 00:00:00) ist " ; Lsyssec ' Beispiel 4 mit Time- und Date-String Strtime = "10:23:50" Strdate = "02-11-29" ' ANSI-Datum Lsyssec = Syssec(strtime , Strdate) Print "System Second von " ; Strtime ; " am " ; Strdate ; " ist " ; Lsyssec ' 91880630 ' ==================== Day Of Year ========================================= ' Beispiel 1 mit interner RTC-Clock _day = 20 : _month = 11 : _year = 2 ' Testwerte zuweisen Wdayofyear = Dayofyear() Print "Day Of Year of " ; Date$ ; " is " ; Wdayofyear ' Beispiel 2 mit benutzerdefinierten Clock-Bytes (Day / Month / Year) Bday = 24 : Bmonth = 5 : Byear = 8 Wdayofyear = Dayofyear(bday) Print "Day Of Year von Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " (" ; Date(bday) ; ") ist " ; Wdayofyear ' Beispiel 3 mit Datums-String Strdate = "04-10-29" ' ANSI-Format Wdayofyear = Dayofyear(strdate) Print "Day Of Year von " ; Strdate ; " ist " ; Wdayofyear ' Beispiel 4 mit Systemsekunde Lsyssec = 123456789 Wdayofyear = Dayofyear(lsyssec) Print "Day Of Year von Systemsekunde " ; Lsyssec ; " (" ; Date(lsyssec) ; ") ist " ; Wdayofyear ' Beispiel 5 mit System Day (Systemtag) Wsysday = 3000 Wdayofyear = Dayofyear(wsysday) Print "Day Of Year von Systemtag " ; Wsysday ; " (" ; Date(wsysday) ; ") ist " ; Wdayofyear ' =================== System Day ====================================== ' Beispiel 1 mit internaer RTC-Clock _day = 20 : _month = 11 : _year = 2 ' Testwerte zuweisen Wsysday = Sysday() Print "System Day of " ; Date$ ; " is " ; Wsysday ' Beispiel 2 mit benutzerdefinierten Clock-Bytes (Day / Month / Year) Bday = 24 : Bmonth = 5 : Byear = 8 Wsysday = Sysday(bday) Print "System Day von Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " (" ; Date(bday) ; ") ist " ; Wsysday ' Beispiel 3 mit Date-String Strdate = "04-10-29" Wsysday = Sysday(strdate) Print "System Day von " ; Strdate ; " ist " ; Wsysday ' Beispiel 4 mit Systemsekunde Lsyssec = 123456789 Wsysday = Sysday(lsyssec) Print "System Day von Systemsekunde " ; Lsyssec ; " (" ; Date(lsyssec) ; ") ist " ; Wsysday ' =================== Time ================================================ ' Beispiel 1: Umwandlung benutzerdefinierter Clock-Bytes (Second / Minute / Hour) zu Time-String Bsec = 20 : Bmin = 1 : Bhour = 7 Strtime = Time(bsec) Print "Time values: Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " umgewandelt zu String " ; Strtime ' Beispiel 2: Umwandlung Systemsekunde zu Time-String Lsyssec = 123456789 Strtime = Time(lsyssec) Print "Time of Systemsecond " ; Lsyssec ; " is " ; Strtime ' Beispiel 3: Umwandlung Second of Day zu Time-String Lsecofday = 12345 Strtime = Time(lsecofday) Print "Time von Second of Day " ; Lsecofday ; " ist " ; Strtime ' Beispiel 4: Umwandlung System Second zu benutzerdefinierten Clock-Bytes (Second / Minute / Hour) Lsyssec = 123456789 Bsec = Time(lsyssec) Print "System Second " ; Lsyssec ; " umgewandelt zu Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(lsyssec) ; ")" ' Beispiel 5: Umwandlung Second of Day zu benutzerdefinierten Clock-Bytes (Second / Minute / Hour) Lsecofday = 12345 Bsec = Time(lsecofday) Print "Second of Day " ; Lsecofday ; " umgewandelt zu Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ; " (" ; Time(lsecofday) ; ")" ' Beispiel 6: Umwandlung Time-string zu benutzerdefinierten Clock-Bytes (Second / Minute / Hour) Strtime = "07:33:12" Bsec = Time(strtime) Print "Time " ; Strtime ; " umgewandelt zu Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour ' ============================= Date ========================================== ' Beispiel 1: Umwandlung benutzerdefinierter Clock-Bytes (Day / Month / Year) zu Date-String Bday = 29 : Bmonth = 4 : Byear = 12 Strdate = Date(bday) Print "Datumswerte: Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " umgewandelt zu String " ; Strdate ' Beispiel 2: Umwandlung von Systemtag zu Dat- String Wsysday = 1234 Strdate = Date(wsysday) Print "System Day " ; Wsysday ; " ist " ; Strdate ' Beispiel 3: Umwandlung von Systemsekunde zu Date-String Lsyssec = 123456789 Strdate = Date(lsyssec) Print "Systemsekunde " ; Lsyssec ; " ist " ; Strdate ' Beispiel 4: Umwandlung SystemDay zu benutzerdefinierten Clock-Bytes (Day / Month / Year) Wsysday = 2000 Bday = Date(wsysday) Print "Systemtag " ; Wsysday ; " umgewandelt zu Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " (" ; Date(wsysday) ; ")" ' Beispiel 5: Umwandlung Date-String zu benutzerdefinierten Clock-Bytes (Day / Month / Year) Strdate = "04-08-31" Bday = Date(strdate) Print "Datum " ; Strdate ; " umgewandelt zu Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ' Beispiel 6: Umwandlung Systemsekunde zu benutzerdefinierten Clock-Bytes (Day / Month / Year) Lsyssec = 123456789 Bday = Date(lsyssec) Print "Systemsekunde " ; Lsyssec ; " umgewandelt zu Tag=" ; Bday ; " Monat=" ; Bmonth ; " Jahr=" ; Byear ; " (" ; Date(lsyssec) ; ")" ' ================ Second of Day elapsed Lsecofday = Secofday() _hour = _hour + 1 Lvar1 = Secelapsed(lsecofday) Print Lvar1 Lsyssec = Syssec() _day = _day + 1 Lvar1 = Syssecelapsed(lsyssec) Print Lvar1 Looptest: ' Testwerte _day = 1 _month = 1 _year = 1 _sec = 12 _min = 13 _hour = 14 Do If _year > 50 Then Exit Do End If _sec = _sec + 7 If _sec > 59 Then Incr _min _sec = _sec - 60 End If _min = _min + 2 If _min > 59 Then Incr _hour _min = _min - 60 End If _hour = _hour + 1 If _hour > 23 Then Incr _day _hour = _hour - 24 End If _day = _day + 1 If _day > 28 Then Select Case _month Case 1 Mday = 31 Case 2 Mday = _year And &H03 If Mday = 0 Then Mday = 29 Else Mday = 28 End If Case 3 Mday = 31 Case 4 Mday = 30 Case 5 Mday = 31 Case 6 Mday = 30 Case 7 Mday = 31 Case 8 Mday = 31 Case 9 Mday = 30 Case 10 Mday = 31 Case 11 Mday = 30 Case 12 Mday = 31 End Select If _day > Mday Then _day = _day - Mday Incr _month If _month > 12 Then _month = 1 Incr _year End If End If End If If _year > 99 Then Exit Do End If Lsecofday = Secofday() Lsyssec = Syssec() Bweekday = Dayofweek() Wdayofyear = Dayofyear() Wsysday = Sysday() Print Time$ ; " " ; Date$ ; " " ; Lsecofday ; " " ; Lsyssec ; " " ; Bweekday ; " " ; Wdayofyear ; " " ; Wsysday Loop End 'only when we use I2C for the clock we need to set the clock date time #if Clockmode = 0 'called from datetime.lib Dim Weekday As Byte Getdatetime: I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 0 ' start address in 1307 I2cstart ' Generate start code I2cwbyte Ds1307r ' send address I2crbyte _sec , Ack I2crbyte _min , Ack ' MINUTES I2crbyte _hour , Ack ' Hours I2crbyte Weekday , Ack ' Day of Week I2crbyte _day , Ack ' Day of Month I2crbyte _month , Ack ' Month of Year I2crbyte _year , Nack ' Year I2cstop _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour) _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year) Return Setdate: _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year) I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 4 ' starting address in 1307 I2cwbyte _day ' Send Data to SECONDS I2cwbyte _month ' MINUTES I2cwbyte _year ' Hours I2cstop Return Settime: _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour) I2cstart ' Generate start code I2cwbyte Ds1307w ' send address I2cwbyte 0 ' starting address in 1307 I2cwbyte _sec ' Send Data to SECONDS I2cwbyte _min ' MINUTES I2cwbyte _hour ' Hours I2cstop Return #endif Weekdays: Data "Montag" , "Dienstag" , "Mittwoch" , "Donnerstag" , "Freitag" , "Sonnabend" , "Sonntag"
Languages | English • Deutsch |
---|