I am parsing string time in date using DateTime.Parse method. It parses properly and returns me today's date with the entered time. But I am not able to determine the timezone when it takes the date part. Is it considering local date or UTC date?
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine(DateTime.Parse("4:00"));
//prints 09.05.2019 04:00:00 - here did it take 09.05.2019 from local timezone or is it UTC?
}
}
On referring official documentation of DateTime.Parse, it is mentioned vaguely as follows:
A string with a time but no date component. The method assumes the current date unless you call the Parse(String, IFormatProvider, DateTimeStyles) overload and include DateTimeStyles.NoCurrentDateDefault in the styles argument, in which case the method assumes a date of January 1, 0001.
I am confused what culture's exactly the date is being picked?
Neither, it is Unspecified.
First of all, in .NET Framework, DateTime structure does not keep timezone information. It has Kind property which reflects some information as Utc, Local or Unspecified but they are not perfectly refers a timezone.
In your case, since you don't supply any other parameters, your result DateTime will be Unspecified.
It is stated on the documentation as;
If
scontains time zone information, this method returns a DateTime value whose Kind property isDateTimeKind.Localand converts the date and time in s to local time. Otherwise, it performs no time zone conversion and returns a DateTime value whose Kind property is DateTimeKind.Unspecified.
For representation part, when you use DateTime in Console.WriteLine method, it calls WriteLine(object) overload and this calls the current FormatProvider which is came from Thread.CurrentThread.CurrentCulture.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With