DateAdd Function call - vb.net

In my Windows Form I have a textbox for number of days to add and a textbox that has a date in it... On the button click event I need to use the "DateAdd" function to add the number of days in textbox number of days to the date entered in textxbox date? Can someone give me the correct syntax I have tried this and getting a syntax error.
DateAdd(DateInterval.Day, txtNumDaysTAdd.Text, txtDate.Text)
I than need to display the answer in a messagebox in the Longdate format using the formatdatetime function.

I would rather use .NET's DateTime functions to do this:
Dim myDate As DateTime = DateTime.Parse(txtDate.Text)
Dim daysToAdd As Integer = Integer.Parse(txtNumDaysTAdd.Text)
Dim result As DateTime = myDate.AddDays(daysToAdd)

Don't use DateAdd, it's only there for backwards compatibility with VB6. Use the methods on the DateTime type instead. In VB.NET, the keyword Date is a shortcut for the DateTime type, just as Integer is a shortcut for the Int32 type.
Dim originDate As Date = Date.Parse(txtDate.Text)
Dim daysToAdd As Integer = Integer.Parse(txtDaysToAdd.Text)
Dim result As Date = originDate.AddDays(daysToAdd)
MessageBox.Show(result.ToLongDateString())

Related

What is the date format to convert from string to date

I have below code to get StringToDate as 04/29/2019, but when use CDate function it's giving me #4/29/2019 12:00:00 AM# value. which date format i have to use to get 04/29/2019
Dim StringToDate As Date
Dim strNewDate As String = "04/29/2019"
StringToDate = CDate(strNewDate)
You could use DateTime.TryParse
Dim MyDate As DateTime = Nothing
Dim strNewDate As String = "04/29/2019"
DateTime.TryParse(strNewDate, MyDate)
Edit (misread your question)-
A DateTime holds value and not String. To get what you asking after parsing the date you would need to convert it back to a string with a format method or use the following:
MyDate.ToShortDateString
The way a date is represented is by what the region settings of your OS have setup.
For example, if you were to open the region settings in Control Panel you would find a format for Short Date which by what you're describing is probably M/d/yyyy. Inside the dropdown are other formats you can set and if you were to set it to MM/dd/yyyy you would see that your same code would now display 04/29/2019. But Don't Do This as it only affects your machine. Instead, understand that a date is only number, and you can control how it is displayed, the same way Windows just did from my example. A perfect example of this is that you could set a DateTime variable in many different ways. Here's a few:
Dim dt1 As DateTime = #2019-12-14#
Dim dt2 As DateTime = #1/08/2019#
Dim dt3 As DateTime = #03/03/2019#
Dim dt4 As DateTime = #4/4/2019#
The results would be
12/14/2019 12:00:00 AM
1/8/2019 12:00:00 AM
3/3/2019 12:00:00 AM
4/4/2019 12:00:00 AM
because that is how windows is set up to show me a DateTime as a string.
When you want to display this date to the user in a different format you can simply supply a format to the .ToString() method or use one of the DateTime string conversion methods (ie, .ToShortDateString, .ToLongDateString, etc) You can show the date to the user in a more preferable format.
Taking the last example (dt4) you could use
Console.WriteLine(dt4.ToShortDateString) 'and show 4/4/2019
Console.WriteLine(dt4.ToLongDateString) 'and show Thursday, April 4, 2019
Console.WriteLine(dt4.ToString("MM/dd/yyyy")) 'and show 04/04/2019

String value wrongly converted to datetime using vb.net

So I have this datetime value of 9.3.2016 18:56:12, by using datetime.parse, I can get the values but instead of getting '3' as the month, it takes '9' as month and '3' as day which is incorrect.
dim d1 as string = "9.3.2016 18:56:12"
dim d2 as datetime = datetime.parse(d1, CultureInfo.InvariantCulture)
I don't want to use datetime.parseExact because I'm having more than 1 value in the database.
Please help :( thank you!
Since you current culture appears to interpret dates in the way you expect you could simply do this,
Dim dateString = "9.3.2016 18:56:12"
Dim dateValue = DateTime.Parse(dateString)
By not specifying the InvariantCulture, you instruct DateTime.Parse to use the current culture which, in your case, interprets the date string correctly.
Sorry I've got the solution.
dim d2 as datetime = convert.todatetime(d1)

How do I format a date in a string variable to year date month in vb.net

I have a date in string variable strOrderEndDate which looks like this 8/14/2015.
I would like to convert it to 2015-08-14.
How do I do this in vb.net?
I tried strOrderEndDate.ToString(yyyy mmmm dd) but its not working
As the comments indicate, you first need to convert the string to a date using CDate. Then you can use the .ToString method on the new date type variable to format the output as desired:
Dim strOrderEndDate As String = "8/14/2015"
Dim datOrderEndDate As Date = CDate(strOrderEndDate)
MsgBox(datOrderEndDate.ToString("yyyy-MM-dd"))
...or as Plutonix recommends, you can use DateTime.Parse to perform the conversion. He's pretty smart so if he says it's better, then it's better.
Dim datOrderEndDate As Date = DateTime.Parse(strOrderEndDate)

How do i add 1 month to a date that already has been created on VB?

Hi I'm new to coding and am looking for some help! I've been trying to add 1 month to a date that I've already stored in my database and displayed on a gridview.
Dim dueDate As DateTime = lblDateA.Text.AddMonth(1)
I know the way that I've done it is wrong but i hope you get the idea i'm going for! Thanks in advance!
First convert the date to a DateTime and add Month to it.
Dim dueDate As DateTime = Convert.ToDateTime(lblDateA.Text).AddMonths(1)
Firstly, the Text of a Label is a String, so you can't add a month to it. Whatever you're displaying in that Label should already be being stored in a DateTime variable somewhere. You would then add one month to that and then display the new value, e.g.
Me.dateA = Me.dateA.AddMonths(1)
lblDateA.Text = Me.dateA.ToShortDateString()
You convert the text to a Date and then add the month.
Private Function ConvertDGVDateAndAddMonth(dateAsString As String) As Date
Dim dt As Date
If Date.TryParse(dateAsString, dt) Then
'parsed correctly so we can use the dt variable as a date
Return dt.AddMonth(1)
End If
'if it does not convert return Nothing
Return Nothing
End Function
USage:
Dim dt As Date = ConvertDGVDate(dgv.CurrentCell.Value.ToString)
'if this does not convert dt = Nothing
'be sure to check

How to get a date field from MM/dd/yyyy to yyyy/MM/dd in vb.net

I need to get a date field from MM/dd/yyyy to yyyy/MM/dd in vb.net but it should still be a date field afterward so that I can match it against a date in a database.
At the moment all I'm managing to do is to change it to a string in that format.
I tried this type of code which also did not work.
DateTime.Parse(yourDataAsAString).ToString("yyyy-MM-dd")
fromDeString = String.Format("{0:yyyy/MM/dd}", aDate)
fromDate = Format("{0:yyyy/MM/dd}", aDate)
Any help would be much apreciated, thanks
You're not understanding that a date object does not store the digits in any particular format. The only way to get the digits formatted in the order you want is to convert it to a string. Why do you need to compare them in a particular format? A date is a date no matter how it is formatted. 12/15/78 == 1978/12/15.
If you are not able to compare dates from the DB against a date object in VB, it is likely that the date you are comparing to in the database is being returned to you in string format, in which case you should covert it to a date object for comparison.
Dim sDate As String = "2009/12/15" 'Get the date from the database and store it as a string
Dim dDate As New Date(2009, 12, 15) 'Your date object, set to whatever date you want to compare against
Select Case Date.Compare(dDate, Date.Parse(sDate))
Case 0
'The dates are equal
Case Is > 0
'The date in the database is less
Case Is < 0
'The date in the database is greater
End Select
Here's a sample module demonstrating the functionality you desire.
Imports System.Globalization
Module Module1
Sub Main()
Dim culture As New CultureInfo("en-us", True)
Dim mmDDyy As String = "10/23/2009"
Dim realDate As Date = Date.ParseExact(mmDDyy, "mm/dd/yyyy", culture)
Dim yyMMdd As String = realDate.ToString("yyyy/MM/dd")
End Sub
End Module
Hope this helps.
Kind Regards
Noel
Your second should actually work. Instead just try:
dim chislo as date = date.now dim message As String = $"
Today`s Date: {String.Format("{0:dddd, dd/MM/yyyy}", Chislo)} "
MsgBox(message)