vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Datumsformat 
Autor: atta1
Datum: 02.05.17 20:07

Hallo,

ich habe in einer Datei folgenden Wert:

Angelegt_am 42782,4063949074

Hat jemand eine Ahnung um Welches Format es sich hier handelt ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Manfred X
Datum: 02.05.17 20:15

Hallo!

Falls es sich bei der Angabe um den 16.02.2017 09:45:13 handelt,
ist es die VB6-Darstellung eines Zeitwertes (als Double).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: atta1
Datum: 02.05.17 20:29

Leider weis ich nicht um welche Zeit es sich handelt.

Wie bekommt man sowas raus ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Manfred X
Datum: 02.05.17 20:38

Ein Gleitkomma-Zahlenwert ist keine standardisierte Darstellung
eines Datums bzw. einer Uhrzeit.
Insofern kann Dein Zahlen-Wert jedes beliebige Datum repräsentieren.
Das ist ausschließlich von der verwendeten Codierung abhängig.
Finde heraus, woher diese Angaben stammen und wie sie entstanden sind
(Welches Programm? Welche Funktion? Welche Zeitachsen-Skalierung?)
Welcher Kalender-Zeitraum soll durch diese Zahlen abgebildte werden?

In VB.Net kannst Du folgende Routine nutzen, um das OLE-Automatisierungsdatum
aus einem Double-Wert zu bestimmen:

Dim x As String = DateTime.FromOADate(42782.4063949074).ToString

Ob das für Deinen Fall paßt: ?????????
Mehr kann man ohne weitere Informationen nicht mitteilen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: atta1
Datum: 04.05.17 21:16

Wie kann ich den Wert aus einer Textbox wieder zurück in Datum bringen ?

Dim x As String = DateTime.FromOADate(Textbox1.text).ToString

funktioniert leider nicht
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Franki
Datum: 05.05.17 02:29

Hallo,
du hast da den völlig falschen Anstatz.
Denn eine Textbox kann ja irgendwas enthalten was keinem Datum auch nur annähernd entspricht.

Beispiel: abc1defg2 steht in der Textbox, daraus wird nie ein Datum.
Also mußt du grundlegende Plausibilitätsprüfungen des Inhalts der Textbox auf ein gültiges Datum durchführen.

Das hat jetzt nichts damit zu tun, dass der User in der Textbox irgend eine Quatsch eingeben kann. Eine Textbox ist halt nicht dafür geeignet ein Datum ohne Nachkontrolle zu erfassen. Dafür gibt es Steuerelemente die auf Datum/Uhrzeit ausgerichtet sind. Und genau diese sollte man nutzen oder sich sebst ein Usercontrol dafür schreiben falls dir die Standard Steuerelement mit deren Eingenschaften nicht ausreichen.

Ansonsten musst du halt Schritt für Schritt prüfen, ob die Eingabe in der Textbox plausibel ist oder nicht.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Manfred X
Datum: 05.05.17 10:29

Hallo!

Die DateTime.FromOADate-Methode erwartet als Parameter einen Double-Wert.

In der Text-Eigenschaft einer Textbox steht eine beliebige Zeichenfolge.
Wenn Du diesen String als Double-Wert weiterverarbeiten willst, mußt Du
ihn entsprechend umwandeln - d.h. als Gleitkommawert parsen (z.B. TryParse).

Beschäftige Dich mit den Datentypen in Visual Basic und wie sie umgewandelt
werden können (Konvertieren, Parsen).

'Dim textbox1 As New TextBox With {.Text = "42782,4063949074"}
 
 
Dim dbl As Double, dati As DateTime
 
If Double.TryParse(textbox1.Text, dbl) Then
   dati = DateTime.FromOADate(dbl)  'Double --> Datum/Zeit
   MsgBox("Das Datum ist: " & _
     dati.ToString("dd.MM.yyyy hh:mm:ss")) 'Datum/Zeit --> String
Else
   MsgBox("Es ist kein geeigneter Doublewert gegeben worden")
End If
Nicht-numerische Teile der Zeichenfolge - z.B. "Angelegt_am" - müssen
vor dem Parsen aus der Zeichenfolge entfernt werden z.B. Replace("Angelegt_am ", "")

Eventuell sind auch Culture-Einstellungen zu beachten.
Die deutsche Kultur verwendet das Dezimalkomma, die invariante Kultur
den Dezimalpunkt.

Beitrag wurde zuletzt am 05.05.17 um 10:39:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Franki
Datum: 06.05.17 04:13

Hallo ManfredX,

soweit so gut, aber du prüfst bei deinem Beispiel ja nur darauf ab, ob sich der Inhalt der Textbox auch zu Double umwandeln lässt.

Aber das reicht ja nicht, denn nicht jeder gültige Double Wert entspricht auch einem (erwünschten oder plausiblem) Datum.

Das mit der Kultur ist aber auch noch seine eine Sache, Komma und Punkt hast du angesprochen, aber im deutschen Datumsangaben kommt kein Komma vor. (jedenfalls nicht intern bei der Programmierung)

Hier ist bei der Kultur eher zu beachten, dass bei einigen Ländern Monat und Tag vertauschst sind. So kann z.B. 03.02.2017 bedeuten, dass es sich um den dritten Februar handelt oder aber auch um den zweiten März. Da muss man die Herkunft der Datumsangabe wissen und in die entsprechend gewünschte Kultur umwandeln. Ohen diese Kenntniss kann das nicht zuverlässig funktionieren.

Das nur als Hinweis weil der Fragesteller dieses Forumbeitrags nicht genau weiß woher das Datum stammt.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Manfred X
Datum: 06.05.17 08:49

Hallo!

Was Du schreibst, geht am Thema vorbei.

In einer Datei liegen die zu konvertierenden Datumsangaben
als Double-Werte bereits vor.
In der Textbox stehen sie (vermutlich) nur zur Anzeige und
sind keine Dialog-Eingaben des Benutzers.

Zur Prüfung, ob die Ausprägung dieser Werte als Datum plausibel ist,
können derzeit keine Angaben gemacht werden, weil die Zeit-Skala nicht
bekannt ist.

Bei der Frage der Formatierung kommt es nur auf den Double-Wert
an; ob das in der Datei verwendete Dezimal-Symbol mit den Programm-
Einstellungen bei der Konvertierung korrespondiert.

Da kein Datum in der Form "Tag-Monat-Jahr" o.ä. vorliegt, sind
entsprechende Hinweise hier nicht relevant.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: minimalist
Datum: 06.05.17 16:59

Dieser code:
 Private Sub Button5_Click(sender As Object, e As EventArgs) Handles _
   Button5.Click
        Dim idate As Date
        Dim db As Double
        If Double.TryParse(Trim(TextBox11.Text), db) Then
            ' text is convertible to Double, and value contains the Double 
            ' value now
        End If
        idate = Date.FromOADate(db)
        Debug.Print(idate.ToString)
    End Sub
returns:
16.02.2017 09:45:12
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: Manfred X
Datum: 06.05.17 17:11

Hallo!

Du bist Dir im klaren darüber, daß in dem Fall das Nulldatum der Skala
ausgegeben wird, falls kein gültiger Double-Wert in der Textbox vorliegt?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datumsformat 
Autor: minimalist
Datum: 06.05.17 17:20

30.12.1899 00:00:00
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel