[VBS]Reageren op de wintertijd

Pagina: 1
Acties:

  • WaSteiL
  • Registratie: Juli 2003
  • Laatst online: 09:02
Ik heb een logon-script gemaakt waar er een check gedaan wordt op de "Datum laatst gewijzigd" van een bestand. Op basis hiervan wordt uiteindelijk een software pakket wel of niet geinstalleerd.

Dat script werkte perfect. Totdat gebruiker gingen klagen dat elke ochtend het opstarten van de pc wel erg lang duurde. Blijkt dat door het verspringen van de tijd door de wintertijd de tijd van het bestand ook gewijzigd is. Hierdoor klopt mijn script wel, maar de waardes waarop hij checked niet meer. Hij blijft daardoor in een loop hangen die pas na een minuut of 10 wordt doorbroken.

Wat ik nu maar gedaan heb is een check op zowel de winter- en zomertijd, maar dat verdient ook niet de schoonheidsprijs. Ik moet er dan altijd rekening mee houden dat als ik in de toekomst weer een script maak dat ik op twee tijden check.

Is hier geen andere oplossing voor? Terugrekenen naar een tijdzone zonder zomer en wintertijd bijvoorbeeld? Ik heb me al gek gezocht in google, maar kom eigenlijk helemaal niets tegen behalve een hoop applicaties die eigenlijk ook last hebben van dit probleem.

Dit is het onderdeel van het script waar ik de check mee doe:

VBScript:
1
2
SET fileObject = fso.GetFile(file01)
IF fileObject.DateLastModified = ("17-10-2005 16:22:56")

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

als het om het installeren van een app gaat, waarom kijk je dan niet gewoon alleen naar het dag-gedeelte en negeer je de tijd :?

  • WaSteiL
  • Registratie: Juli 2003
  • Laatst online: 09:02
PhysicsRules schreef op vrijdag 17 november 2006 @ 12:07:
als het om het installeren van een app gaat, waarom kijk je dan niet gewoon alleen naar het dag-gedeelte en negeer je de tijd :?
Omdat de tijd ook nog wel eens wil afwijken in hele specifieke versies.
Daarnaast komt er uit: FileObject.DateLastModified een waarde uit met zowel datum en tijd. Die zou ik dan eerst moeten gaan strippen. Dan kan ik net zo goed een oplossing hebben waarin het uur gecompenseerd gaat worden.

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

WaSteiL schreef op vrijdag 17 november 2006 @ 12:38:
[...]


Omdat de tijd ook nog wel eens wil afwijken in hele specifieke versies.
Daarnaast komt er uit: FileObject.DateLastModified een waarde uit met zowel datum en tijd. Die zou ik dan eerst moeten gaan strippen. Dan kan ik net zo goed een oplossing hebben waarin het uur gecompenseerd gaat worden.
Alleen de datum nemen is toch makkelijker dan bepalen of je een uur moet corrigeren.

Wat misschien nog het makkelijkst is als je dan de datum vergelijkt met de datum die je wilt vergelijken en plus/minus een uur:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim TestDatum as Date
Dim UurEerder as Date
Dim UurLater as Date
Dim BestandsDatum as Date

TestDatum = "17-10-2005 16:22:56"
UurEerder = DateAdd("h", -1, TestDatum)
UurLater = DateAdd("h", 1, TestDatum)
BestandsDatum = fileObject.DateLastModified 

If BestandsDatum = TestDatum  _
   Or BestandsDatum = UurEerder _
   Or BestandsDatum = UurLater Then


Tenzij dit nog steeds te algemeen is, natuurlijk :P

  • WaSteiL
  • Registratie: Juli 2003
  • Laatst online: 09:02
PhysicsRules schreef op vrijdag 17 november 2006 @ 12:53:
[...]

Alleen de datum nemen is toch makkelijker dan bepalen of je een uur moet corrigeren.

Wat misschien nog het makkelijkst is als je dan de datum vergelijkt met de datum die je wilt vergelijken en plus/minus een uur:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim TestDatum as Date
Dim UurEerder as Date
Dim UurLater as Date
Dim BestandsDatum as Date

TestDatum = "17-10-2005 16:22:56"
UurEerder = DateAdd("h", -1, TestDatum)
UurLater = DateAdd("h", 1, TestDatum)
BestandsDatum = fileObject.DateLastModified 

If BestandsDatum = TestDatum  _
   Or BestandsDatum = UurEerder _
   Or BestandsDatum = UurLater Then


Tenzij dit nog steeds te algemeen is, natuurlijk :P
Zoals ik al zei moet ik meer checken dan alleen de datum. De tijd is in sommige gevallen ook van belang.

Ik los het nu maar gewoon op op de volgende manier. Dat is minder code dan jouw stukje alleen moet ik de waarde 2 keer opgeven.

VBScript:
1
2
IF FileObject.DateLastModified = ("17-10-2005 16:22:56") _
OR FileObject.DateLastModified = ("17-10-2005 15:22:56")


Opzich heb ik dus ook wel een oplossing, maar het lijkt mij dat dit wel vaker voor moet komen met daarbij een betere oplossing dan de tijd te gaan corrigeren.