DateTime does not parse from string [closed] - c#

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 8 years ago.
Improve this question
I'm trying to parse a string to a DateTime using DateTime.TryParseExact()
The issue is it returns false.
class Program
{
static void Main(string[] args)
{
var date = "30/01/2014 10:02:43:096";
DateTime dt;
if (DateTime.TryParseExact(date, "MM/dd/yyyy HH:mm:ss:fff", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
Console.WriteLine("Yipee");
else
Console.WriteLine("D'oh!");
Console.ReadKey();
}
}
If I update the date the program to use a different string date var date = "03/01/2014 10:02:43:096"; then it works
I can't work out why it doesn't like 30 as the month...

Problem : in your date string 30/01/2014 10:02:43:096 Date 30 comes first but you are parsing it as Month suing MM/dd/yyyy HH:mm:ss:fff
Solution : You need to use dd/MM/yyyy instead of MM/dd/yyyy as your datestring is 30/01/2014 10:02:43:096 where date comes first.
Try This:
if (DateTime.TryParseExact(date, "dd/MM/yyyy HH:mm:ss:fff",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))

date "30/01/2014 10:02:43:096"
format "MM/dd/yyyy HH:mm:ss:fff"
You are trying to get a Month of 30. :|

try
if (DateTime.TryParseExact(date, "dd/MM/yyyy HH:mm:ss:fff",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))

Related

Formatting datetime variable [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I am trying to convert and store a date in the form of String into datetime variable.
String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate);
This dfromDate is used in another function which expects date to be in 02-JUN-2014 format.But since dfromDate storing the date as 06/02/2014, there is a format exception.
You can use ParseExact()
String fromdate="02-JUN-2014";
DateTime dFromDate = DateTime.ParseExact(fromdate, "dd-MMM-yyyy",CultureInfo.InvariantCulture)
Wrap fromDate in quotes:
var fromdate = "02-JUN-2014";
var dFromDate = Convert.ToDateTime(fromdate);
I am not to sure of the entire context but you could always use the folowing to create a new date:
DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");
// The example displays the following output:
// Today is June 10, 2011.
You want to use DateTime.ParseExact i.e.
DateTime dFromDate = DateTime.ParseExact(fromdate, "dd-MMM-yyyy", CultureInfo.InvariantCulture);
You may need to specific a culture for your language if you are not US (CultureInfo.InvariantCulture is a special form of US).
Convert.ToDateTime uses standard date and time format of your CurrentCulture and looks like dd-MMM-yyyy is not one of them.
You can use ParseExact method with english-based culture like InvariantCulture.
String fromdate = "02-JUN-2014";
DateTime dFromDate = DateTime.ParseExact(fromdate, "dd-MMM-yyyy",
CultureInfo.InvariantCulture);
Using DateTime.ParseExactmight work, and itis the best option if you know exactly the format string, but you could also set the current CultureInfo for the call:
String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate, CultureInfo.CurrentCulture);
Or:
String fromdate= "02-JUN-2014";
DateTime dFromDate = Convert.ToDateTime(fromdate, new CultureInfo("es-ES"));
String fromdate= "02-JUN-2014";
DateTime dFromDate = DateTime.ParseExact(fromdate,"dd-MMM-yyyy",
CultureInfo.InvariantCulture);
Use ParseExact method.
Your first problem might be, that you need to assign a string like this:
String fromdate = "02-JUN-2014";

How to convert date time format to date and time object? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
What is the best way to convert to date and time the string:
"Jan 7 09:27:56" can be also like this: "Jan 12 09:27:56"
You can use MMM d HH:mm:ss as a custom date and time format strings with a english-based and uses : as a TimeSeparator culture like InvariantCulture.
var s = "Jan 7 09:27:56";
DateTime dt = DateTime.ParseExact(s, "MMM d HH:mm:ss", CultureInfo.InvariantCulture);
or
var s = "Jan 12 09:27:56";
DateTime dt = DateTime.ParseExact(s, "MMM d HH:mm:ss", CultureInfo.InvariantCulture);

How to find number of days from two string type dates? [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 two text box dates (8/11/2014) and (9/11/2014). I want to find the number of days between these two dates. I am getting some string error message. Please help me..
Just parse both dates and then substract them and count total days like this:
DateTime date1 = DateTime.ParseExact(dateString1, "d/M/yyyy", CultureInfo.InvariantCulture);
DateTime date2 = DateTime.ParseExact(dateString2, "d/M/yyyy", CultureInfo.InvariantCulture);
var days = (int)(date2-date1).TotalDays;
I feel taking risk to answer this but..
You can use DateTime.ParseExact or DateTime.TryParseExact methods to parse your strings and subtract each other and use TimeSpan.TotalDays property. You can use TimeSpan.Days property as well if you are interested in the total days as an int rather than a double.
string txtdate = "8/11/2014";
DateTime dt;
if(DateTime.TryParseExact(txtdate, "d/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
}
string txtdate1 = "9/11/2014";
DateTime dt1;
if(DateTime.TryParseExact(txtdate1, "d/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt1))
{
}
var totaldays = (dt1 - dt).Days; // 1
You said;
I need output as 8/11/2014-9/11/2014=1. But I applied your code it
shows output like 1.0?
I told you TotalDays property returns double and Days property returns int. But besides that, you seems like a result as 9/11/2014 - 8/11/2014 = 1 instead of just 1. In such a case, you can use string.Format like;
var result = string.Format("{0} - {1} = {2}",
dt1.ToString("d/MM/yyyy", CultureInfo.InvariantCulture),
dt.ToString("d/MM/yyyy", CultureInfo.InvariantCulture),
totaldays);
result will be 9/11/2014 - 8/11/2014 = 1

C# - Convert a string [ Month DD, YYYY ] to DateTime [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 want to convert a string with this format Month DD, YYYY to a DateTime object, and performance is so important here.
String examples:
string AlaaJoseph = "October 23, 1996";
string JennetteMcCurdy = "June 26, 1992";
DateTime dt = DateTime.ParseExact("October 23, 1996",
"MMMM d, yyyy",
new CultureInfo("en-US"));
Have a look at using something like
DateTime.TryParseExact Method (String, String[], IFormatProvider, DateTimeStyles, DateTime)
Converts the specified string representation of a date and time to its
DateTime equivalent using the specified array of formats,
culture-specific format information, and style. The format of the
string representation must match at least one of the specified formats
exactly. The method returns a value that indicates whether the
conversion succeeded.
Something like
string AlaaJoseph = "October 23, 1996";
DateTime AlaaJosephDateTime;
if (DateTime.TryParseExact(AlaaJoseph, "MMMM dd, yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out AlaaJosephDateTime))
Console.WriteLine("DateTimeTryParseExact Passed");
string JennetteMcCurdy = "June 26, 1992";
DateTime JennetteMcCurdyDateTime;
if (DateTime.TryParseExact(JennetteMcCurdy, "MMMM dd, yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out JennetteMcCurdyDateTime))
Console.WriteLine("DateTimeTryParseExact Passed");
Also, another good thing to know about is Custom Date and Time Format Strings
You can Do in this way:
DateTime dt = DateTime.ParseExact("October 23, 1996",
"MMMM d, yyyy",
new CultureInfo("en-US"));
performance is so important here
i Think performance is of secondary importance. Proper functioning of program in all scenarios is foremost. if it is fast in one scenario and fails on nine than it is useless to have a fast program. You should first make your program to work in all scenarios and then consider making if optimised. Even if you write your own parser to parse string you will still have to do all exception handling at any stage.
So, instead of reinventing the wheel and to ensure that you don't have to deal with any sort of exception handling and let the framework do that for you. You should use
DateTime.TryParseExact
it also has an overload that takes string[] formats where you can specify all the formats that you expect user to give
string[] formats= {"MMMM dd, yyyy","MMM dd, yyyy","M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
DateTime resultantDate;
string AlaaJoseph = "October 23, 1996";
if (DateTime.TryParseExact(AlaaJoseph, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out resultantDate))
{
//your rest of code
}

String not valid as a datetime string - Convert "yyyyMMdd" to datetime [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
I have strings in format of "yyyyMMdd".
I would like to convert them into DateTime with the format but I get an error that says the string is not valid as a DateTime string.
How can I do this?
Use DateTime.ParseExact to specify the format and invariant culture:
var date = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);
Try DateTime.TryParseExact
DateTime dt;
DateTime.TryParseExact(textBox.Text, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Use DateTime.ParseExact:
string dateString = "20130701";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", null, DateTimeStyles.None);
This question has been asked and answered before. But here is an example of working code:
string DateString = "20130701";
DateTime DT = DateTime.ParseExact(DateString, "yyyyMMdd", CultureInfo.InvariantCulture);
Where CultureInfo.InvariantCulture is a part of the System.Globalization namespace.
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.71).aspx
Break them into a format which DateTime.Parse will accept as valid. You could even use a regular expression to parse out the information
Regex format = new Regex("(?<year>^[0-9]{4})(?<month>[0-9]{2})(?<day>[0-9]{2})");
Match m = format.Match(inputString);
int year = int.Parse(m.Groups["year"].Value;
int month = int.Parse(m.Groups["month"].Value;
int day = int.Parse(m.Groups["day"].Value;
DateTime date = new DateTime(year, month, day);

Categories

Resources