I Got This String:
00:00:59,950
lets say that i want :00:00:59,950 + 100
then the string look like:
00:01:00,050
there is a function that can do it?
You can use the TimeSpan type to handle this:
Dim ci = CultureInfo.InvariantCulture
Dim original As TimeSpan = TimeSpan.ParseExact("00:00:59,950", "hh\:mm\:ss\,fff", ci)
Dim difference As TimeSpan = TimeSpan.FromMilliseconds(100)
Dim final = original + difference
Dim output as String = final.ToString("hh\:mm\:ss\,fff", ci)
Try this:
Dim dateFormat As String = "hh:mm:ss.fffffff"
Dim date1 As Date = #00:00:59,950"
date1.AddMilliseconds(100)
UPDATE:
I must've been more tired than I realized yesterday, I apologize for that.. This should do better:
Dim sTime As String = "00:00:59.950"
Dim dOffset As DateTimeOffset = DateTimeOffset.Parse(sTime)
dOffset = dOffset.AddMilliseconds(100)
Dim sDisplayTime As String = dOffset.ToString("HH:mm:ss.fff tt")
There you'll get the milliseconds in the format you stated in your question.
Related
Please help me first before giving me a bad feedback.
I need to add two time from text box. But when I'm adding it only the minute was adding and not the hours.
Dim dt As DateTime = TxtDTEAP.Text
Dim wt As DateTime = TxtWTEAP.Text
Dim totalspan As New TimeSpan
Dim result As New DateTime
result = dt.AddMinutes(wt.Minute)
Me.TxtTRTEAP.Text = result
For example, the txtWTEAP.Text = 1:30 and txtDTEAP.Text = 2:50 the result should be 4:20 but the result showing on this code is 1:20 only.
Thank you so much!
Split the strings in the TextBoxes into an array. The first element will contain the hours and the second element will contain the minutes. The c following the split character tells the compiler this is a char not a string.
Use the constructor of the TimeSpan structure to create TimeSpans. The constructor takes 3 arguments, Hours as Integer, Minutes as Integer and Seconds as Integer.
Finally, we can do the addition.
Then display the result using .ToString with a format string. The \ is and escape character so it doesn't think the : is something else.
Private Sub GetTotalTime()
Dim parseTime1() As String = TxtDTEAP.Text.Split(":"c)
Dim parseTime2() As String = TxtWTEAP.Text.Split(":"c)
Dim dt As TimeSpan = New TimeSpan(CInt(parseTime1(0)), CInt(parseTime1(1)), 0)
Dim wt As TimeSpan = New TimeSpan(CInt(parseTime2(0)), CInt(parseTime2(1)), 0)
Dim result As TimeSpan = dt + wt
TxtTRTEAP.Text = result.ToString("h\:mm")
End Sub
The following string was generated by this code:
myString = 12:44:44.6111472
myString = Date.Now.TimeOfDay.ToString
I want to add 16.1234567 seconds and the value of myString and assign the resulting value to a new string called myNewString.
Every function I have tried looses the 7 decimal places.
Is there another method I can use that doesn't require me to break apart the entire string value, modify the desired parts, account for carry's, then re-assemble?
If not, then so-be-it.
But, I would like think there is some method, and I'm just not finding it!
Thanks!
Datetime has some parsing functions that you can use. For example:
Dim mystring As String = "12:44:44.6111472"
Dim dt As System.DateTime = System.DateTime.Parse(mystring)
dt += New TimeSpan(16.1234567 * TimeSpan.TicksPerSecond)
mystring = dt.TimeOfDay.ToString()
'now mystring = "12:45:00.7346039"
Here's another approach similar to Ben J's without the use of timespan (which may make things look simpler):
Dim myString = Date.Now.TimeOfDay.ToString
' parse datetime string and add seconds
Dim myDate = DateTime.Parse(myString).AddSeconds(16.1234567)
' outputs 16.123000 so you still lose a few decimal points but not all 7,
' is this close enough precision for you?
Dim ts = String.Format("{0:N6}", (New TimeSpan(myDate.Ticks) - New TimeSpan(DateTime.Parse(myString).Ticks)).TotalSeconds)
i'm trying to convert this string type into date time
Here :
Dim podate As Label = 19/12/2016
Dim datedate As Date = Date.Now
datedate = Convert.ToDateTime(podate).toString("yyyyMMdd")
and the result it says : Input string was not in a correct format. any idea where did i wrong?
You can do something like this
Dim podate as String
Dim podateToString as String
podate = "19/12/2016"
podateToString = podate
podateToString.ToString("yyyyMMdd")
I've been doing this, is it possible to get the middle string in datetime.
Example :
Basically my string return this '12/23/2015 12:00:00 AM'.
However, what i want is actually '15' from the year 2015.
I've been using something like this 'strDate = strDate.Substring(0, 9)',
which sometimes return me wrong when the date is something like this '1/2/2015 12:00:00 AM'
Can someone help me on this, i am not sure if we can get the middle.
Don't use string methods for this, use DateTime.TryParseExact:
Dim str = "12/23/2015 12:00:00 AM"
Dim dt As DateTime
If DateTime.TryParseExact(str, "MM'/'dd'/'yyyy hh:mm:ss tt", Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, dt) Then
Dim yearOnly As String = dt.ToString("yy") ' 15
End If
Update: with CultureInfo.InvariantCulture and this format you don't even need to use TryParseExact, you can use Parse/TryParse immediately:
DateTime.TryParse(str, CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
MSDN: Custom Date and Time Format Strings, The "yy" Custom Format Specifier
If you really want to treat it as just strings, you can get it by splitting twice. First on the space, then on the slashes:
Dim justDate as String = strDate.Split(" ")(0) 'contains "12/23/2015"
Dim justYear as String = justDate.Split("/")(2) 'contains "2015"
Dim partYear as String = justYear.Substring(2,2) 'contains "15"
or all in one line:
Dim partYear as String = strDate.Split(" ")(0).Split("/")(2).Substring(2,2)
Try this
dim dateStr as string
dateStr = "12/23/2015 12:00:00 AM"
dim dateobj as new DateTime
dateobj = DateTime.Parse(dateStr)
dim year as integer
year = dateobj.Year
dim youWantStr = year.ToString().Substring(2)
Console.WriteLine(youWantStr)
What will be the easiest way to convert a string to decimal?
Input:
a = 40000.00-
Output will be
40,000.00-
I tried to use this code:
Dim a as string
a = "4000.00-"
a = Format$(a, "#,###.##")
console.writeline (a)
Use Decimal.Parse to convert to decimal number, and then use .ToString("format here") to convert back to a string.
Dim aAsDecimal as Decimal = Decimal.Parse(a).ToString("format here")
Last resort approach (not recommended):
string s = (aAsDecimal <0) ? Math.Abs(aAsDecimal).ToString("##,###0.00") + "-" : aAsDecimal .ToString("##,###0.00");
You will have to translate to Visual Basic.
For VB.NET:
CDec(Val(string_value))
For example,
CDec(Val(a))
The result will be 40000D or if the value for a = "400.02" then it will be 400.02D.
Use Decimal.TryParse
Dim a as string
Dim b as Decimal
If Decimal.TryParse(a, b) Then
a = b.ToString("##,###.00")
Else
a = "can not parse"
End If
The following works fine for me, but I don't know whether it is correct or not.
double a = 40000.00;
a = double.Parse(a.ToString("##,###.00"));
MessageBox.Show(a.ToString("##,###.00"));
Sub Main()
Dim convert As Func(Of String, Decimal) = _
Function(x As String) Decimal.Parse(x) ' This is a lambda expression.
Dim a = convert("-16325.62")
Dim spec As String = "N"
Console.WriteLine("{1}", spec, a.ToString(spec))
'Console.ReadLine() ' Uncomment to see value in Console output.
End Sub
Dim D# = CDec(TextBox1.Text) '//convert string to decimal with short
This code works, but it is quite long:
Dim a as string
Dim b as decimal
a = "4000.00-"
b = a
If b >= 0 then
console.writeline (b.ToString("##,###.00"))
Else
b = Math.Abs(b)
console.writeline (b.ToString("##,###.00") & "-")
End if