toto je moja verzia domaceho ukolu .. original verzia :
http://www.rlmueller.net/Integer8Attributes.htm
info o tom type:
http://msdn.microsoft.com/library/defau ... nteger.asp
Kód: Vybrat vše
Function EightByteIntToDate(objDate, posun)
' funkce konvertuje large Integer/Interval na datumovy podtyp VARIANTu
' posun je minutovy posun oproti GMT ... CR,SK = - 60
Dim lngAdjust, lngDate, lngHigh, lngLow
lngAdjust = posun
' tieto funkce su zo standardneho typu lADslargeInteger
lngHigh = objDate.HighPart
lngLow = objdate.LowPart
' IADslargeInteger je znamenkovy typ a ak najvyssi bit je jedna tak to berie za zaporne cislo
' predpoklada sposob ukladania zapornych cisel pomocou bitoveho doplnku
If (lngLow < 0) Then
lngHigh = lngHigh + 1
End If
If (lngHigh = 0) And (lngLow = 0) Then
lngAdjust = 0
End If
' datum je ulozeny v stovkach nanosekund
lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
+ lngLow) / 600000000 - lngAdjust) / 1440
' osetrenie errorov
On Error Resume Next
' CDate vracia datumovy podtyp VARIANTu
EightByteIntToDate = CDate(lngDate)
If (Err.Number <> 0) Then
On Error GoTo 0
EightByteIntToDate = #1/1/1601#
End If
On Error GoTo 0
End Function
wscript.echo "=== Konverzie datumov ==="
Set myUser =GetObject("LDAP://CN=Administrator,CN=Users,DC=matfyz,DC=vojtek,DC=cz")
' tie atributy som nasiel pomocou toolu ADSIedit
set passwordLastSet = myUser.get("pwdLastSet")
set userLastLogon = myUser.get("lastLogon")
wscript.echo "Datum poslednej zmeny hesla: " & EightByteIntToDate(passwordLastSet,-60)
wscript.echo "Datum posledneho zalogovania: " & EightByteIntToDate(userLastLogon,-60)
wscript.Echo "THE END "