How to convert datetime in C# [closed] - c#

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 4 years ago.
Improve this question
I have to edit textbox field and update in Database.
DateTime d2 = Convert.ToDateTime(txteventdate.Text.ToString());
ds = obj.EditEvents(Id, txtname.Text, d2, txtinfo.Text, txtvenue.Text);
if (ds.Tables[0].Rows.Count >= 0)
{
lblid.Text = CommonFunctions.DecryptStr(Request.QueryString["id"].ToString());
txtname.Text = ds.Tables[0].Rows[0]["Name"].ToString();
txtinfo.Text = ds.Tables[0].Rows[0]["info"].ToString();
txtvenue.Text = ds.Tables[0].Rows[0]["venue"].ToString();
txteventdate.Text = ds.Tables[0].Rows[0]["Eventdate"].ToString();
}
The textbox value is "2018-04-19 21:34:00.000".
I tried several times with all possible solutions which I know but it is giving me below error.
String was not recognized as a valid DateTime.
Thanks in Advance.

Below code converts your string to DateTime object. If you want to use the exception safe then use DateTime.TryParseExtract
var date = DateTime.ParseExact(ds.Tables[0].Rows[0]["Eventdate"].ToString(), "yyyy-MM-dd HH:mm:ss.fff", System.Globalization.CultureInfo.InvariantCulture);

Please do not convert 'unknown user input' data directly into another type. Try with DateTime.TryParse. Further you could check in advance if even something was entered:
if(string.IsNullOrEmpty(txteventdate.Text))
{
MessageBox.Show("Date is necessary!");
return;
}
if(!DateTime.TryParse(txteventdate.Text, out DateTime parsedDateTime))
{
MessageBox.Show($"Invalid {txteventdate.Text}!");
return;
}
If you want to parse a specific date format you could check for DateTime.TryParseExact. The msdn article has got nice examples at the bottom.

Related

Parse date format as mm-yy from mm/yy [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 4 years ago.
Improve this question
I wanna convert MM/YY formatted string date to mm-yy DateTime. And set as the value for rad masked edit box. But it returns to me
"String was not recognized as a valid DateTime."
I tried with
DateTime dt = DateTime.ParseExact("11/17", "MMyy", CultureInfo.InvariantCulture);
for eg, I want to convert 03/16 and set value of radmasked edit box masked as MMyy as 03-16
Why do you expect this to work at all?
DateTime dt = DateTime.ParseExact("11/17", "MMyy", CultureInfo.InvariantCulture);
You get a string 11/17 and try to parse it with a format that doesn't contain any delimiters.
This works:
DateTime dt = DateTime.ParseExact("11/17", "MM/yy", CultureInfo.InvariantCulture);
If you want to convert it to a string with this format: MMyy:
string result = dt.ToString("MMyy", CultureInfo.InvariantCulture);
Since it's not clear, if you want this instead: MM-yy
string result = dt.ToString("MM-yy", CultureInfo.InvariantCulture);
It's working for 11/17,12/17. but not in the case of 3/12 etc i.e when
a month is a single digit.
You haven't mentioned that it's possible that the month has a single digit, however:
DateTime dt = DateTime.ParseExact("3/17", "M/yy", CultureInfo.InvariantCulture);
This will work for you.
DateTime dt = DateTime.ParseExact("11/17", "MM/yy", CultureInfo.InvariantCulture);
Then you can convert it to your desired format
string formattedDate = dt.ToString("MM-yy");
In case you want to change delimeter '/' into '-' only, i.e. if you have no need in DateTime temporary value, you can just Replace:
string source = "11/17";
// 11-17: changing '/' to '-'
string result = source.Replace('/', '-');

Check Date Equals 1st Date of Month C# [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 8 years ago.
Improve this question
User can input any date, month and year like 12/12/2013, 1/1/2014, 7/5/2014, 5/1/2012 in MM\DD\YYYY format.
How to check the date is first date of month ?
If the user entry is not first date of month, I want to modify that entry to 1st date of month. In my Examples, I want
12/12/2013 as 12/1/2013
1/1/2014 as 1/1/2014(No Change)
7/5/2014 as 7/1/2014
5/1/2012 as 5/1/2012(No Change)
Thanks
DateTime date = ... // your original date here...
// Don't bother checking, just create a new date for the 1st.
date = new DateTime(date.Year, date.Month, 1);
UPDATE:
The OP has apparently changed the specs:
DateTime date = ... // your original date here...
if (date.Day != 1)
date = new DateTime(date.Year, date.Month, 1).AddMonths(1);
(let the .AddMonths() method worry about the year rolling over in December...)
IMO, since you have a definite format you expect from users (MM\DD\YYYY) why not do a simple split and dig your hit:
string arbitDate = "4/3/2014";
string UsersFirstDay = arbitDate.Trim().Split(new String[] { "/" }, StringSplitOptions.RemoveEmptyEntries)[1].Trim();//index 1 is the DD part - according to your format
UsersFirstDay = (UsersFirstDay == "1") ? UsersFirstDay : "1";
Pass your date to this function:
public static void ConvertToFirstDate(ref DateTime dt){
TimeSpan ts = dt.Subtract(new DateTime(dt.Year, dt.Month, 1));
dt = dt.AddDays(-ts.Days);
}

How can I compare Two Dates using C#? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
How can I compare Two Dates using C# where one is in my database file and other will be given through a textbox and the date formate is yyyy-mm-dd.
DateTime dt1= DateTime.ParseExact("Yourdate1","yyyy-MM-dd",
CultureInfo.InvariantCulture);
DateTime dt2= DateTime.ParseExact("Yourdate2","yyyy-MM-dd",
CultureInfo.InvariantCulture);
int result = DateTime.Compare(dt1,dt2) ;
if(result == 0)
{
//both dates are same
}
else if(result < 0)
{
//Date1 is lessthan Date2
}
else
{
//Date2 is lessthan Date1
}
Try something like this:
string date = "2014-03-17";
DateTime d1 = DateTime.Parse(date);
DateTime d2 = DateTime.Now.Date;
if (d1.Equals(d2))
{
//Do something
}
Try this:
if(datetime1 == DateTime.ParseExact(txtDateTime.Text,"yyyy-MM-dd",CultureInfo.InvariantCulture))
{
//Code
}
OR
if(datetime1 == Convert.ToDateTime(txtDateTime.Text))
{
//Code
}

C# conversion of date from string to date format [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 9 years ago.
Improve this question
I have a problem with the DateTime.ParseExtract. The error is String was not recognized as a valid DateTime.
trialDate in the sqlserver 2012 is define as folllow type=date and it is display in this format
MM/dd/yyyy. I guess it is the default for sqlserver. I don't know how and where to change it to
dd/MM/yyyy or dd-MM-yyyy.
When I display the date in the listview I did this (put a mask):
'
Here is the C# code-behind
string sTrialDate = "";
foreach (ListViewDataItem item in ListView1.Items)
{
CheckBox MyCheckBox = (CheckBox)item.FindControl("MyCheckBox");
if (MyCheckBox.Checked)
{
Label myTrialDate = (Label)item.FindControl("trialDatelbl");
sTrialDate = myTrialDate.Text;
}
}
The problem is the DATETIME.ParseExtract, here is what I tried so far:
DateTime dt = DateTime.ParseExact("sTrialDate", "MM/dd/yyyy",
System.Globalization.CultureInfo.InvariantCulture); <=== not working
DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy",
System.Globalization.CultureInfo.InvariantCulture); <=== not working
DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy ",
System.Globalization.CultureInfo.InvariantCulture); <=== not working
DateTime dt = DateTime.ParseExact(Request.QueryString["sTrialDate"], "dd/MM/yyyy", null);
<==not working
You seem to be misusing ParseExact. You are doing:
ParseExact("sDateRdv", "MM/dd/yyyy")
Which is trying to parse the string sDateRdv as a date and obviously failing. If sDateRdv is a variable containing your date then you should use:
ParseExact(sDateRdv, "MM/dd/yyyy")
In your last example you should check what the value of Request.QueryString["sTrialDate"] is. Is it a valid date string?
Lastly you talk about a date in sqlserver and how to change its representation. The answer is you don't really. A date is a date and is independant of how it is displayed. When you look at it it will be converted to a human readable string (because that's all we read) but that doesn't represent how it is stored. You would treat it as a date the whole way (so get it from the database into your C# code as a DateTime) and you only ever convert it to a string for display or maybe some kinds of serialisation (eg XML).
Apart from the fact that you should not pass your variable in quotes:
DateTime dt = DateTime.ParseExact(sDateRdv, "MM/dd/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
DateTime dt = DateTime.ParseExact(sDateRdv, "dd/MM/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
DateTime dt = DateTime.ParseExact(sDateRdv, "dd/MM/yyyy ",
System.Globalization.CultureInfo.InvariantCulture);
You could also try this:
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.ShortDatePattern = "dd-MM-yyyy";
DateTime objDate = Convert.ToDateTime(someStringWithDate, dtfi)

Convert SQL Datetime to C# Date [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have null able DateTime database field and its corresponding class's DateTime? variable in C# code.
I want to convert that value in normal date.
e.g. I want to convert From
2013-12-12 00:00:00.000 to 2013-12-12
Any help is admirable. Thanks.
if(dt.HasValue)
{
newDt = dt.Value.ToString("yyyy-MM-dd");
}
I suppose that dt is the value you get from your database. If it is not null, then I set the string newDt equal to the expression you want.
It's just unclear what do you mean by "normal" date, but I assume you want to format it in a proper way. DateTime object extends the ToString() method to provide format information:
DateTime? dt;
//your code here
string output;
if (dt != null){
output = ((DateTime)dt).ToString("yyyy'-'MM'-'dd");
}
You can use the DateTime.Parse(String) in combination with .ToShortDateString().
So for your example:
DateTime.Parse("2013-12-12 00:00:00.000").ToShortDateString()
Its without catching a ParseException or something else, so you have to do it by yourself!
You can try ToShortDateString() method
yourDate.ToShortDateString();
with yourDate a DateTime varible.
It will remove the time part of your datetime (ie 00:00:00.000) and only keep the Date part.
DateTime dateToDisplay = new DateTime(2009, 6, 1, 8, 42, 50);
String formattedDate = dateToDisplay.ToShortDateString()
You can also set the culture here to get in whatever format you want.
http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring(v=vs.110).aspx
var s = ((DateTime)ExpirtyDate).Date;
string ans = s.ToString()
Take the value in a datetime variable and use the following to just get the date and not time:
DateTime Mydate = DateTime.Now;// instead of datetime.now get the value form sql
DateTime newformat = Mydate.Date;//then use this to get only date and remove tome
alternatively you can use the mydate.ToShortDateString() function as well

Categories