Springen naar inhoud


- - - - -
Solved

Datum Naar Bytes

datum bytes

  • Log in a.u.b. om te beantwoorden
Er zijn 13 reacties in dit onderwerp

#1 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 14:25


Hallo iedereen,

Weet iemand hoe dat Windows zijn datum opslaat in bytes?
Het enige dat ik weet is dat ze 8 bytes gebruiken.

Ik heb al op Google gezocht maar ik kan niets vinden.

Groeten

#2 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 14:30

Bericht bekijkenDieterVB, op 05 January 2013 - 14:25, zei:

Weet iemand hoe dat Windows zijn datum opslaat in bytes?
Wat is precies "Windows zijn datum"?
En dat "opslaan", dat is waar precies?

#3 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 15:09

Sorry voor de onduidelijkheid.
Wat ik dus eigenlijk wil weten is wat de meest gebruikte techniek is om een datum(jaar, maand, dag, uur, minuut, seconde, milliseconde)
om te zetten in een byte array. Dus hoeveel bits worden gebruikt voor het jaar, hoeveel voor de maand, .... of worden de minuten gewoon omgezet in seconden, ....
Waar het wordt opgeslagen is niet van belang. Dit is puur uit interesse ;).

#4 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 15:17

Windows definieert 4 date/time structures.
Ik vermoed dat je vraagt naar SYSTEMTIME.
C Code:
typedef struct _SYSTEMTIME {
	WORD wYear;
	WORD wMonth;
	WORD wDayOfWeek;
	WORD wDay;
	WORD wHour;
	WORD wMinute;
	WORD wSecond;
	WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;



#5 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 15:28

Ah, en een WORD is een unsigned 16 bits integer (UInt16 in .NET)

#6 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 15:35

Thx! Nu ik weet dat Windows 4 date/time structuren definieert, is voornamelijk de FILETIME die me boeit.
Maar als 1 WORD al 16 bits is hoe krijgt Windows een volledige datum dan in 64bits?

Groeten

#7 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 17:56

Bericht bekijkenDieterVB, op 05 January 2013 - 15:35, zei:

is voornamelijk de FILETIME die me boeit.
Maar als 1 WORD al 16 bits is hoe krijgt Windows een volledige datum dan in 64bits?
Een FILETIME struct bevat geen datum, wel het aantal keer dat 100 nanoseconden verstreken zijn sinds 1 januari 1601.
Als je daar een datum uit wil moet je dat berekenen (of de Win API functies gebruiken die dat voor je doen).

#8 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 19:51

Ah oké merci ik begrijp het. En de SYSTEMTIME hoe wordt die dan opgeslagen?
"Ongeveer" volgens deze manier? : http://stackoverflow...c-64-bit-format

#9 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 19:57

Bericht bekijkenDieterVB, op 05 January 2013 - 19:51, zei:

Ah oké merci ik begrijp het. En de SYSTEMTIME hoe wordt die dan opgeslagen?
"Ongeveer" volgens deze manier? : http://stackoverflow...c-64-bit-format
Neen. :shock:
Het is zoals hier.
wYear is het jaar
wMonth is de maand (1-12)
wDayOfWeek is de zero based weekdag (0 is zondag, 1 maandag, ... 6 is zaterdag)
wDay is dag van de maand (1-31)
wHour, wMinute, wSecond en wMilliseconds zijn respectievelijk het uur, minuten, seconden en milliseconden.

#10 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 20:06

Dus m.a.w. kan je enkel de FILETIME in een 64-bit integer opslaan en dus niet de SYSTEMTIME?

#11 Benno

Benno

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 10 Aug 2014 13:16
  • LocatieGyor, Magyarország

Geplaatst op 05 January 2013 - 20:27

Bericht bekijkenDieterVB, op 05 January 2013 - 20:06, zei:

Dus m.a.w. kan je enkel de FILETIME in een 64-bit integer opslaan en dus niet de SYSTEMTIME?
Je vraag is niet echt beantwoordbaar.
Ik denk dat je misschien beter uitlegt wat je nodig hebt en waarom, want zo raken we niet echt verder.

Je moet begrijpen dat zowel FILETIME als SYSTEMTIME structs zijn.
En waarvoor ze worden gebruikt.
SYSTEMTIME wordt zo bijvoorbeeld gebruikt om de systeem datum en tijd op te vragen.

Voorbeeld in VB.NET:
Visual Basic Code:
	<StructLayout(LayoutKind.Sequential)> _
	 Public Structure SYSTEMTIME
		Public wYear As UInt16
		Public wMonth As UInt16
		Public wDayOfWeek As UInt16
		Public wDay As UInt16
		Public wHour As UInt16
		Public wMinute As UInt16
		Public wSecond As UInt16
		Public wMilliseconds As UInt16
	End Structure

	<DllImport("kernel32")>
	Private Shared Sub GetSystemTime(ByRef lpSystemTime As SYSTEMTIME)
	End Sub

	Private Sub Test()
		Const format As String = "dddd dd MMMM yyyy HH:mm:ss fff"
		Dim sysTime As SYSTEMTIME
		GetSystemTime(sysTime)
		With sysTime
			Dim dt As New DateTime(.wYear, .wMonth, .wDay, .wHour, .wMinute, .wSecond, .wMilliseconds)
			MessageBox.Show(DateTime.Now.ToString(Format) + Environment.NewLine + dt.ToString(Format))
		End With
	End Sub
 



#12 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 05 January 2013 - 20:44

Ik ben bezig met het ontwikkelen van een mini os in assembler en c. Als bestandssysteem is FAT12 het gemakkelijkst om mee te beginnen.
Maar ik ben van plan er zelf eentje te maken. Omdat bij bestanden meestal ook een datum hoort ben ik opzoek naar een methode om een
datum zo compact mogelijk binair op te slaan. Daarom wou ik eerst eens weten hoe Windows dat doet.
Omdat ik zo low-level bezig ben heb ik geen enkele libraries.

#13 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 579 berichten
    Laatst bezocht gisteren, 23:43

Geplaatst op 06 January 2013 - 16:37

Leuk!

Op deze pagina staat hoe FAT12 het opslaat in 32 bits.

http://www.maverick-...html#TimeFormat
Verkoop van Peruaanse producten in Nederland en België. www.que-rico.nl

#14 DieterVB

DieterVB

    Professional Developer

  • Leden
  • PipPipPipPip
  • 340 berichten
    Laatst bezocht
  • LocatieVlaamse Ardennen

Geplaatst op 07 January 2013 - 00:51

Danku josk79! Perfect wat ik nodig had, hoe heb je dat gevonden? :)

Benno, ook bedankt voor de informatie, die heb ik ondertussen al goed kunnen gebruiken!
Proficiat om mijn vraag zo goed te decoderen ;) ik had hem wel iets beter mogen uitleggen.





Ook met taq Solved, datum, bytes voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[Solved] Untitled 1

Hosting provided by Combell
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be