Convert SQL Datetime to C# Date [closed] - c#

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

Related

How to convert datetime in 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 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.

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('/', '-');

C# Convert String to Date Time Whereas string has AM : PM formate [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
I have string time. lets say '06:35 PM'. I want to convert the string to DateTime.
The date must be current time(the day as they input the time).
I did
string times = endTime;
DateTime dt;
(DateTime.TryParseExact(times, "YYYY-MM-dd HH:mm tt", CultureInfo.InvariantCulture,DateTimeStyles.None, out dt))
But it didn't works. it make a null value. because when I try to put the result on label, the label did not show anything. and also I have been try
var date = DateTime.Parse("06:45 AM");
Console.WriteLine(date);
But it didn't works too and it makes an error.
ERROR System.Data.SqlClient.SqlException (0x80131904): The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated. "
How do I convert it ?
I think you are passing the string "06:45 AM" to the database and this is not a valid entry since the DB does not know how to store it, hence the exception.
Looking a bit further, in your first example, YYYY should be lowercase yyyy. YYYY will not parse properly correctly in to a date format.
Considering the second example you have two options:
1) When writing to the database, make sure you pass a valid date, e.g. below. You may need to try a few formats to match up to what your DB expects but it will need a full date and time.
var date = string.Format("{0:yyyy-MM-dd HH:mm tt}", DateTime.Parse("06:45 AM"));
Console.WriteLine(date);
2) Use a full DateTime approach using the correct SQL parameter type. This looks like a good explanation covering a few gotchas. Using DateTime in a SqlParameter for Stored Procedure, format error
If day doesn't matter, you can use following
DateTime date;
if (DateTime.TryParseExact("06:45 AM", new[] {"h:mm tt"}, null, DateTimeStyles.None, out date))
{
Console.WriteLine(date);
Console.WriteLine(date.TimeOfDay);
}
I think the below code will solve your issue;
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(06, 45, 0);
dt = dt.Date + ts;
To convert string to DateTime format, use the below code;
string date = "01/08/2008";
DateTime dt = Convert.ToDateTime(date);

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);
}

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)

Categories