| |
VB.NET - Ein- und UmsteigerRe: Zeit in Minuten | | | Autor: Manfred X | Datum: 27.01.15 17:13 |
| Du hast die "TotalMinutes"-Eigenschaft einer Instanz der Timespan-Klasse verwendet,
die die Zeitdifferenz enthält?
Poste mal Deinen Code!
| |
Zeit in Minuten | | | Autor: blackmann85 | Datum: 21.01.15 21:30 |
| Hallo,
kann mir bitte jemand einen Code nennen der nur die Minuten anzeigt ? Ich habe 3 Zeiten "start" "Ende" und "benötigte Zeit" ich möchste nicht das er zB. 13:00:00 - 13:10:00 = 00:10:00 ich möchte das er nur 10 als benöigte zeit anzeigt.
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox3.Text = (CDate(TextBox2.Text) - CDate(TextBox1.Text)).ToString()
End Sub
danke | |
Re: Zeit in Minuten | | | Autor: Manfred X | Datum: 21.01.15 21:56 |
| Hallo!
Schau das mal an .... (Parsen, Konvertieren, Zeitspanne ...)
Dim time1 As String = "12.6.2012 17:50:00"
Dim time2 As String = "12.6.2012 14:25:20"
Dim dt1 As Date, dt2 As Date
If Date.TryParse(time1, dt1) AndAlso Date.TryParse(time2, dt2) Then
Dim ts As TimeSpan = dt1 - dt2
MsgBox(ts.TotalSeconds.ToString & " Sekunden")
End If Negative Zeit-Intervalle solltest Du möglichst vermeiden: Ende - Start
Es gibt in der Timespan-Klasse auch TotalMinutes, TotalHours, ...
Beitrag wurde zuletzt am 21.01.15 um 22:18:31 editiert. | |
Re: Zeit in Minuten | | | Autor: blackmann85 | Datum: 27.01.15 16:53 |
| Hallo,
so nun zeigt er mir die minuten von 0-59 an wenn ich nun 2 Stunden von 12:00 - 14:00 Uhr schreibe soll nun 120 da stehen ... was muss ich eingeben das er über 59min rechnet?
Danke | |
Re: Zeit in Minuten | | | Autor: Kuno60 | Datum: 27.01.15 17:16 |
| So wie Manfred schon schrieb: Du musst TotalMinutes verwenden!
Also so:
TextBox3.Text = (CDate(TextBox2.Text) - CDate( _
TextBox1.Text)).TotalMinutes.ToString() | |
Ergänzende Hinweise | | | Autor: Manfred X | Datum: 27.01.15 17:27 |
| Zum Parsen eines Strings als Date sollte man "TryParse" verwenden (siehe oben) -
insbesondere bei Benutzereingaben in Controls.
Die Total ....- Eigenschaften geben den Datentyp-Double zurück, weil
Bruchteile eines Zeitintervalls bei der Angabe in Gesamt-Stunden,
Gesamt-Minuten etc enthalten sein können (z.B. 90 Sek. = 1,5 Minuten).
Man sollte deshalb bei der Anzeige solcher Werte durch die ToString-Methode
eine geeignete Formatierung angeben (Rundung auf sinnvolle Stellenzahl o.ä.),
wenn in der Zeitspanne kürzere Zeiteinheiten enthalten sein können
als die ausgegebene Einheit.
Beitrag wurde zuletzt am 27.01.15 um 17:31:46 editiert. | |
Re: Zeit in Minuten | | | Autor: blackmann85 | Datum: 27.01.15 18:34 |
| Ok danke Kuno das hat so funktioniert.
Eine letzte Frage habe ich noch:
Wenn ich nun auf den Button "Ende" drücke gibt er mit die Zeit. Zugleich soll er mit in eine Andere Textbox die zusmmengerechnete Zeit wiedergeben.
Zb.
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
EndeTextBox.Text = TimeOfDay
If EndeTextBox.Text = "12:00:00" Then BeschichtungszeitTextBox.Text = (CDate(EndeTextBox.Text) - CDate(StartTextBox.Text)).TotalMinutes.ToString()
End Sub
bei mir bleibt die BeschichtungszeitTextBox.Text leider leer.
(ich habe es mal mit normalen Textboxen probiert...da ging es) | |
Re: Zeit in Minuten | | | Autor: Manfred X | Datum: 27.01.15 18:54 |
| Tja. "TimeOfDay" liefert die aktuelle Uhrzeit.
Die Box wird deshalb nur um exakt 12:00 gefüllt.
Bei der Differenzbildung (Zeitspanne berechnen)
hilft Dir diese Methode (Uhrzeit-Komponente) ohnehin nicht,
z.B. weil bei einem Tageswechsel die Datumskomponente zu beachten ist.
Beitrag wurde zuletzt am 27.01.15 um 18:57:33 editiert. | |
Re: Zeit in Minuten | | | Autor: blackmann85 | Datum: 27.01.15 19:43 |
| Manfred ich verzweifel langsam ich checks nicht. Kannst du mir noch einmal genau sagen wie ich vorgehen muss. Folgende Vorgaben habe ich:
Button1 = StartZeit (TextBox1)
Button2 = EndeZeit (TextBox2)
Button3 = BenötigteZeit (wird ausgerechnet ) (TextBox3)
in TextBox4 soll nun die TextBox3 in min ausgegeben werden und gleichtig *7 gerechnet werden. Die TextBox ist nicht Sichtbar für den Mitarbeiter.
danke
| |
Re: Zeit in Minuten | | | Autor: Manfred X | Datum: 27.01.15 20:19 |
| Ich weiß nicht, wo genau Dein Problem liegt
Hier eine Klasse, die Du nur ins Projekt einfügen mußt und
die direkt als Startformular ausführbar ist.
(Alle Controls werden automatisch erstellt. Nichts draufziehen!)
Du kannst in die Textboxen entweder Datum und Uhrzeit eingeben
oder nur jeweils eine Uhrzeit (die beide am gleichen Tag liegen).
Wie dieser Faktor zu verwenden ist und warum Du eine
unsichtbare Textbox benutzt, verstehe ich nicht.
Option Strict On
Option Explicit On
Public Class TimeSpan_Demo
Inherits System.Windows.Forms.Form
Dim lblstart As New Label With _
{.Parent = Me, .Top = 20, .Width = 100, .Text = "Startzeit: "}
Dim tboStart As New TextBox With _
{.Parent = Me, .Top = 20, .Width = 100, .Left = 110}
Dim lblEnde As New Label With _
{.Parent = Me, .Top = 50, .Width = 100, .Text = "Endzeit: "}
Dim tboEnde As New TextBox With _
{.Parent = Me, .Top = 50, .Width = 100, .Left = 110}
Dim WithEvents btnZeitspanne As New Button With _
{.Parent = Me, .Top = 80, .Width = 200, _
.Text = "Zeitintervall berechnen"}
Private Sub btnZeitspanne_Click _
(sender As Object, e As System.EventArgs) Handles btnZeitspanne.Click
Dim start, ende As Date
If Not Date.TryParse(tboStart.Text, start) Then
MsgBox("Ungültige Startzeit") : Exit Sub
End If
If Not Date.TryParse(tboEnde.Text, ende) Then
MsgBox("Ungültige Endzeit") : Exit Sub
End If
'Die Zeitachse arbeitet mit der Einheit Ticks
'Berechnung des Intervalls
Dim ts As New TimeSpan(ende.Ticks - start.Ticks)
If ts.Ticks < 0 Then
MsgBox("Start liegt später als Ende") : Exit Sub
End If
MsgBox("Die Zeitspanne beträgt " & _
ts.TotalMinutes.ToString("0.##") & " Minuten")
'In eine Textbox würde man das so eintragen
'Textbox3.Text = ts.totalminutes.tostring("0.##")
'Faktor
'Textbox4.Text = (ts.totalminutes * 7).tostring("0.##")
End Sub
Private Sub TimeSpan_Demo_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
Me.Size = New Size(300, 200)
End Sub
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'TimeSpan_Demo
'
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Name = "TimeSpan_Demo"
Me.ResumeLayout(False)
End Sub
End Class
Beitrag wurde zuletzt am 27.01.15 um 20:24:31 editiert. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|