Dies ist ein ReadOnly-Mirror von wiki.piratenpartei.de!
Die Daten werden täglich aktualisiert.

Vorlage:NaechstesPiratentreffen

Aus Piratenwiki Mirror
Version vom 22. September 2011, 15:21 Uhr von imported>Cherubim (Die Seite wurde neu angelegt: „<noinclude>Diese Vorlage generiert automatisch einen Timestamp anhand der Vorgaben Wochentag, intervall und Uhrzeit.<br> Die Ausgabe erfolgt im Format YYYYMMDDhhm…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Diese Vorlage generiert automatisch einen Timestamp anhand der Vorgaben Wochentag, intervall und Uhrzeit.
Die Ausgabe erfolgt im Format YYYYMMDDhhmmss, bspw. 20251210162055 für jetzt(bzw. vor zwei stunden, da das wiki eine andere Lokalzeit hat).


Wie benutze ich diese Vorlage

Erstellt eine eigene Vorlage für eurer Piratentreffen, die folgendes enthält:

{{Vorlage:NaechstesPiratentreffen
| Wochentag = Mo
| Intervall = 1
| Uhrzeit = 19:45
}}

Diese Vorlage erzeugt beim Aufruf einen Timestamp entsprechend dem gewünschten Intervall. Hier der Schlüssel für die Intervalle (einfach die gewünschte Zahl verwenden):

1 : jede Woche
2 : jeden 1. und 3.
3 : jeden 2. und 4.
4 : jeden 1.
5 : jeden 2.
6 : jeden 3.
7 : jeden 4.
8 : jede gerade Woche (nach ISO 8601 mit Montag beginnend)
9 : jede ungerade Woche (nach ISO 8601 mit Montag beginnend)
10: jeden 1., 3. und 5.
11: jeden Letzten des Monats

Diesen Timestamp könnt ihr dann auf eurer Seite mit der funktion

{{#time: ZEITFORMAT | TIMESTAMP}}

in ein lesbares Datum umwandeln.

ZEITFORMAT entsprich dabei einem Formatierungsstring, mehr Infos zur Formatierung gibt es hier
Ein Beispiel wäre:

{{#time: l, \d\e\n d.m.Y \u\m H:i \U\h\r | 20100515184500 }}

Das Resultat wäre:

Samstag, den 15.05.2010 um 18:45 Uhr

Anstelle von TIMESTAMP könnt ihr entweder manuell einen Timestamp eintragen, wie im Beispiel, oder für regelmäßige Termine gebt ihr hier eure oben erstellte Vorlage an.

ToDo

  1. Kommentieren ^^
  2. Algorithmus zur bestimmung der Wochenzahlen (schon von haus aus implementiert {{#time: W | TIMESTAMP}}
    1. Intervall für jede gerade/jede ungerade woche

Quellcode

{{#vardefine: currentTime | 
	{{CURRENTTIMESTAMP}}
}} 

{{#vardefine: weekday |
	{{{Wochentag}}}
}}

{{#vardefine: interval |
	{{{Intervall}}}
}}

{{#vardefine: time |
	{{#pad: {{#pad: {{#sub: {{{Uhrzeit}}} | 0 | 2 }} | 4 | {{#sub: {{{Uhrzeit}}} | 3 | 2 }} | right }} | 6 | 0 | right }}
}}

{{#vardefine: currentYear |
	{{#sub: {{#var:currentTime}} | 0 | 4 }}
}}

{{#vardefine: currentMonth |
	{{#sub: {{#var:currentTime}} | 4 | 2 }}
}}

{{#vardefine: isLeapyear | 
	{{#ifexpr: ({{#var: currentYear}} mod 400) = 0 | 1 |
		{{#ifexpr: ({{#var: currentYear}} mod 100) = 0 | 0 |
			{{#ifexpr: ({{#var: currentYear}} mod 4) = 0 | 1 | 0 }}
		}}
	}}
}}

{{#vardefine: daysOfMonth |
	{{#switch: {{#var: currentMonth}}
		|01 = 31
		|02 = {{#ifeq: {{#var: isLeapyear}} | 1 | 29 | 28 }}
		|03 = 31
		|04 = 30
		|05 = 31
		|06 = 30
		|07 = 31
		|08 = 31
		|09 = 30
		|10 = 31
		|11 = 30
		|12 = 31
	}}
}}

{{#vardefine: firstDayOfCurrentMonth |
	{{#time: D |
		{{#pad: {{#var: currentYear}} | 14 | 
			{{#pad: {{#var: currentMonth}} | 10 | 01000000 | right}} | 
			right
		}}
    }}
}}

{{#vardefine: firstDesiredWeekday |
	{{#switch: {{#var: weekday}}
		|Mo = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 1
					|Di = 7
					|Mi = 6
					|Do = 5
					|Fr = 4
					|Sa = 3
					|So = 2
				}}
		|Di = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 2
					|Di = 1
					|Mi = 7
					|Do = 6
					|Fr = 5
					|Sa = 4
					|So = 3
				}}
		|Mi = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 3
					|Di = 2
					|Mi = 1
					|Do = 7
					|Fr = 6
					|Sa = 5
					|So = 4
				}}
		|Do = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 4
					|Di = 3
					|Mi = 2
					|Do = 1
					|Fr = 7
					|Sa = 6
					|So = 5
				}}
		|Fr = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 5
					|Di = 4
					|Mi = 3
					|Do = 2
					|Fr = 1
					|Sa = 7
					|So = 6
				}}
		|Sa = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 6
					|Di = 5
					|Mi = 4
					|Do = 3
					|Fr = 2
					|Sa = 1
					|So = 7
				}}
		|So = 	{{#switch: {{#var: firstDayOfCurrentMonth}}
					|Mo = 7
					|Di = 6
					|Mi = 5
					|Do = 4
					|Fr = 3
					|Sa = 2
					|So = 1
				}}
	}}
}}

{{#vardefine: nextDatesYear |
	{{#ifexpr: ({{#var: currentMonth}} + 1) > 12 |
		{{#expr ({{#var: currentYear}} + 1 )}} |
		{{#var: currentYear}}
	}}
}}

{{#vardefine: nextMonth |
	{{#ifexpr: ({{#var: currentMonth}} + 1) > 12 |
		01 |
		{{#ifexpr: {{#var: currentMonth}} + 1 > 9 |
			{{#expr: {{#var: currentMonth}} + 1 }} |
			{{#pad: {{#expr: {{#var: currentMonth}} + 1 }} | 2 | 0 | left }}
		}}
	}}
}}

{{#vardefine: firstDayOfNextMonth |
	{{#time: D |
		{{#pad: {{#var: nextDatesYear}} | 14 | 
			{{#pad: {{#var: nextMonth}} | 10 | 01000000 | right}} | 
			right
		}}
    }}
}}

{{#vardefine: daysOfNextMonth |
	{{#switch: {{#var: nextMonth}}
		|01 = 31
		|02 = {{#ifeq: {{#var: isLeapyear}} | 1 | 29 | 28 }}
		|03 = 31
		|04 = 30
		|05 = 31
		|06 = 30
		|07 = 31
		|08 = 31
		|09 = 30
		|10 = 31
		|11 = 30
		|12 = 31
	}}
}}

{{#vardefine: firstDesiredWeekdayNextMonth |
	{{#switch: {{#var: weekday}}
		|Mo = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 1
					|Di = 7
					|Mi = 6
					|Do = 5
					|Fr = 4
					|Sa = 3
					|So = 2
				}}
		|Di = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 2
					|Di = 1
					|Mi = 7
					|Do = 6
					|Fr = 5
					|Sa = 4
					|So = 3
				}}
		|Mi = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 3
					|Di = 2
					|Mi = 1
					|Do = 7
					|Fr = 6
					|Sa = 5
					|So = 4
				}}
		|Do = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 4
					|Di = 3
					|Mi = 2
					|Do = 1
					|Fr = 7
					|Sa = 6
					|So = 5
				}}
		|Fr = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 5
					|Di = 4
					|Mi = 3
					|Do = 2
					|Fr = 1
					|Sa = 7
					|So = 6
				}}
		|Sa = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 6
					|Di = 5
					|Mi = 4
					|Do = 3
					|Fr = 2
					|Sa = 1
					|So = 7
				}}
		|So = 	{{#switch: {{#var: firstDayOfNextMonth}}
					|Mo = 7
					|Di = 6
					|Mi = 5
					|Do = 4
					|Fr = 3
					|Sa = 2
					|So = 1
				}}
	}}
}}

{{#vardefine: firstDate
	|{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: currentYear}} 
				| 6
				| {{#var: currentMonth}} 
				| right 
			}} 
			| 8
			| {{#pad: {{#var: firstDesiredWeekday}} | 2 | 0 | left }} 
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}}
}}

{{#vardefine: secondDate |
	{{#ifexpr: ({{#var: firstDesiredWeekday}} + 7) > 9 
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: currentYear}} 
					| 6 
					| {{#var: currentMonth}} 
					| right 
				}} 
				| 8
				| {{#expr: {{#var: firstDesiredWeekday}} + 7}}
				| right 
			}} 
			| 14
			| {{#var: time}}
			| right 
		}} 
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: currentYear}} 
					| 6 
					| {{#var: currentMonth}} 
					| right 
				}} 
				| 8
				| {{#pad: {{#expr: {{#var: firstDesiredWeekday}} + 7}} | 2 | 0 | left }}
				| right 
			}} 
			| 14
			| {{#var: time}}
			| right 
		}} 
	}}
}}

{{#vardefine: thirdDate |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: currentYear}} 
				| 6 
				| {{#var: currentMonth}} 
				| right 
			}} 
			| 8
			| {{#expr: {{#var: firstDesiredWeekday}} + 14}}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}} 
}}

{{#vardefine: fourthDate |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: currentYear}} 
				| 6 
				| {{#var: currentMonth}} 
				| right 
			}} 
			| 8
			| {{#expr: {{#var: firstDesiredWeekday}} + 21}}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}} 
}}

{{#vardefine: fifthDate |
	{{#ifexpr: ({{#var: firstDesiredWeekday}} + 28) <= {{#var: daysOfMonth}} 
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: currentYear}} 
					| 6 
					| {{#var: currentMonth}} 
					| right 
				}} 
				| 8
				| {{#expr: {{#var: firstDesiredWeekday}} + 28}}
				| right 
			}} 
			| 14
			| {{#var: time}}
			| right 
		}}
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: nextDatesYear}} 
					| 6 
					| {{#var: nextMonth}} 
					| right 
				}} 
				| 8
				| {{#pad: {{#var: firstDesiredWeekdayNextMonth}} | 2 | 0 | left }}
				| right 
			}} 
			| 14
			| {{#var: time}}
			| right 
		}} 
	}}
}}

{{#vardefine: firstDateNextMonth |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: nextDatesYear}} 
				| 6 
				| {{#var: nextMonth}} 
				| right 
			}} 
			| 8
			| {{#pad: {{#var: firstDesiredWeekdayNextMonth}} | 2 | 0 | left }}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}} 
}}

{{#vardefine: secondDateNextMonth |
	{{#ifexpr: ({{#var: firstDesiredWeekdayNextMonth}} + 7) > 9 
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: nextDatesYear}} 
					| 6 
					| {{#var: nextMonth}} 
					| right 
				}} 
				| 8
				| {{#expr: {{#var: firstDesiredWeekdayNextMonth}} + 7}}
				| right 
			}} 
			| 14
			| {{#var: time}}
			| right 
		}} 
		|{{#pad: 
			{{#pad: 
				{{#pad: 
					{{#var: nextDatesYear}} 
					| 6 
					| {{#var: nextMonth}} 
					| right 
				}} 
				| 8
				| {{#pad: {{#expr: {{#var: firstDesiredWeekdayNextMonth}} + 7}} | 2 | 0 | left }}
				| right 
				}} 
			| 14
			| {{#var: time}}
			| right 
		}} 
	}}
}}

{{#vardefine: thirdDateNextMonth |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: nextDatesYear}} 
				| 6 
				| {{#var: nextMonth}} 
				| right 
			}} 
			| 8
			| {{#expr: {{#var: firstDesiredWeekdayNextMonth}} + 14}}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}}
}}

{{#vardefine: fourthDateNextMonth |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: nextDatesYear}} 
				| 6 
				| {{#var: nextMonth}} 
				| right 
			}} 
			| 8
			| {{#expr: {{#var: firstDesiredWeekdayNextMonth}} + 21}}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}}
}}

{{#vardefine: fifthDateNextMonth |
	{{#pad: 
		{{#pad: 
			{{#pad: 
				{{#var: nextDatesYear}} 
				| 6 
				| {{#var: nextMonth}} 
				| right 
			}} 
			| 8
			| {{#expr: {{#var: firstDesiredWeekdayNextMonth}} + 28}}
			| right 
		}} 
		| 14
		| {{#var: time}}
		| right 
	}}
}}

{{#vardefine: lastDate |
	{{#ifeq: {{#var: currentMonth}} |
		{{#sub: {{#var: fifthDate}} |
		4 |
		2}} |
		{{#var: fifthDate}} |
		{{#var: fourthDate}}
	}}
}}

{{#vardefine: lastDateNextMonth |
	{{#ifexpr: ({{#var: daysOfNextMonth}} - {{#sub:
		{{#var: fifthDateNextMonth}} |
		4 |
		2}}) < 0 |
		{{#var: fourthDateNextMonth}} |
		{{#var: fifthDateNextMonth}}
	}}
}}

{{#vardefine: result |
	{{#switch: {{#var: interval}}
		| 1 =	{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
					{{#var: firstDate}} |
					{{#ifexpr: ({{#var: secondDate}} - {{#var:currentTime}}) > 0 |
						{{#var: secondDate}} |
						{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
							{{#var: thirdDate}} |
							{{#ifexpr: ({{#var: fourthDate}} - {{#var:currentTime}}) > 0 |
								{{#var: fourthDate}} |
								{{#ifexpr: ({{#var: fifthDate}} - {{#var:currentTime}}) > 0 |
									{{#var: fifthDate}} |
									{{#var: firstDateNextMonth}}
								}}
							}}
						}}
					}}
				}}
		| 2 = 	{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
					{{#var: firstDate}} |
					{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
						{{#var: thirdDate}} |
						{{#var: firstDateNextMonth}}
					}}
				}}
		| 3 = 	{{#ifexpr: ({{#var: secondDate}} - {{#var:currentTime}}) > 0 |
					{{#var: secondDate}} |
					{{#ifexpr: ({{#var: fourthDate}} - {{#var:currentTime}}) > 0 |
						{{#var: fourthDate}} |
						{{#var: secondDateNextMonth}}
					}}
				}}
		| 4 =	{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
					{{#var: firstDate}} |
					{{#var: firstDateNextMonth}}
				}}
		| 5 =	{{#ifexpr: ({{#var: secondDate}} - {{#var:currentTime}}) > 0 |
					{{#var: secondDate}} |
					{{#var: secondDateNextMonth}}
				}}
		| 6 =	{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
					{{#var: thirdDate}} |
					{{#var: thirdDateNextMonth}}
				}}
		| 7 =	{{#ifexpr: ({{#var: fourthDate}} - {{#var:currentTime}}) > 0 |
					{{#var: fourthDate}} |
					{{#var: fourthDateNextMonth}}
				}}
		| 8	=	{{#ifexpr: {{#time: W | {{#var: firstDate}} }} mod 2 = 0 |
					{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
						{{#var: firstDate}} |
						{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
							{{#var: thirdDate}} |
							{{#ifexpr: ({{#var: fifthDate}} - {{#var:currentTime}}) > 0 |
								{{#var: fifthDate}} |
								{{#var: firstDateNextMonth}}
							}}
						}}
					}} |
					{{#ifexpr: ({{#var: secondDate}} - {{#var:currentTime}}) > 0 |
						{{#var: secondDate}} |
						{{#ifexpr: ({{#var: fourthDate}} - {{#var:currentTime}}) > 0 |
							{{#var: fourthDate}} |
							{{#ifexpr: {{#time: W | {{#var: firstDateNextMonth}} }} mod 2 = 0 |
								{{#var: firstDateNextMonth}} |
								{{#var: secondDateNextMonth}}
							}}
						}}
					}}
				}}
		| 9	=	{{#ifexpr: {{#time: W | {{#var: firstDate}} }} mod 2 != 0 |
					{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
						{{#var: firstDate}} |
						{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
							{{#var: thirdDate}} |
							{{#ifexpr: ({{#var: fifthDate}} - {{#var:currentTime}}) > 0 |
								{{#var: fifthDate}} |
								{{#var: firstDateNextMonth}}
							}}
						}}
					}} |
					{{#ifexpr: ({{#var: secondDate}} - {{#var:currentTime}}) > 0 |
						{{#var: secondDate}} |
						{{#ifexpr: ({{#var: fourthDate}} - {{#var:currentTime}}) > 0 |
							{{#var: fourthDate}} |
							{{#ifexpr: {{#time: W | {{#var: firstDateNextMonth}} }} mod 2 != 0 |
								{{#var: firstDateNextMonth}} |
								{{#var: secondDateNextMonth}}
							}}
						}}
					}}
				}}
		| 10 = 	{{#ifexpr: ({{#var: firstDate}} - {{#var:currentTime}}) > 0 |
					{{#var: firstDate}} |
					{{#ifexpr: ({{#var: thirdDate}} - {{#var:currentTime}}) > 0 |
						{{#var: thirdDate}} |
						{{#ifexpr: ({{#var: fifthDate}} - {{#var:currentTime}}) > 0 |
							{{#var: fifthDate}} |
							{{#var: firstDateNextMonth}}
					}}
					}}
				}}
		| 11 = 	{{#ifexpr: ({{#var: lastDate}} - {{#var:currentTime}}) > 0 |
					{{#var: lastDate}} |
					{{#var: lastDateNextMonth}}
					}}
	}}
}}

{{#var: result}}