Get original DateTime offset [duplicate] - c#

This question already has answers here:
Converting string to DateTime with offset
(5 answers)
Closed 4 years ago.
I have following code
string dateString = "2018-04-20T12:22:32.8526432-05:30";
var objDate = DateTime.Parse(dateString);
string newDateString = objDate.ToString(); //"4/20/2018 1:52:32 PM"
Once string is parsed to DateTime how do I get original DateTime offset i.e. -5:30 from objDate? I tried following code but it gives local offset i.e. -4:00 but not -5:30.
var offset = TimeZone.CurrentTimeZone.GetUtcOffset(objDate);
Please note that I want to get offset from DateTime object (objDate) and not from string variable dateString.

As mentioned by #Evk the DateTime type does not store the offset. Instead as suggested by #maccettura
string dateString = "2018-04-20T12:22:32.8526432-05:30";
var offset = DateTimeOffset.Parse(dateString);
// returns -05:30:00
Console.WriteLine(offset.Offset);

Related

converting datetime to string with T07:00:00.0000000Z [duplicate]

This question already has answers here:
Given a DateTime object, how do I get an ISO 8601 date in string format?
(18 answers)
Closed 4 years ago.
I am attempting to query table storage by generating the following query:
var date = new DateTime(1954, 9, 7);
var timequery = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.LessThanOrEqual, date.ToString());
I am getting a bad request when simply doing date.ToString()
The string that I need would be in the following format: 1954-09-07T07:00:00.0000000Z
How do I convert a regular DateTime to be a string in the specified format?
Var date = new DateTime(1954,7,0,0,0,0,DateTimeKind.Utc);
Var stringDate = date.ToUniversalTime().ToString(“o”);
Gives you the required result as
1954-09-07T00:00:00.0000000Z

How to convert date "2018-12-13T07:33:35.893Z" to 13/12/2018 [duplicate]

This question already has answers here:
How to create a .NET DateTime from ISO 8601 format
(7 answers)
Convert datetime without timezone
(4 answers)
Closed 4 years ago.
I have tried following way but doesn't work
dateTime="2018-12-13T07:33:35.893Z"
DateTime dt;
DateTime.TryParseExact(dateTime, out dt);
But I am always getting dt as {1/1/0001 12:00:00 AM}.
Can you please tell me why? and how can I convert that string to date?
I also tried Convert.ToDateTime but doesn't work.
What I actually want is getting the dd/MM/yyyy string'd DateTime so I could perform a query on a DB.
Have you got the original DateTime object or you simply have it in a string?
In case you've got it as DateTime:
string european = dateTime.ToString("dd/MM/yyyy");
In case you've got it as a string:
string date = "2018-12-13T07:33:35.893Z";
if(DateTime.TryParse(date , out DateTime result))
result.ToString("dd/MM/yyyy");
Have a look at the original MSDN documentation about the DateTime.ToString method
Since you've got a DateTime you can convert to that format:
var thisExactMoment = DateTime.Now;
thisExactMoment.ToString("dd/MM/yyyy");
With your "dateTime" variable, just perform dateTime.ToString("dd/MM/yyyy") and you're ready to go.
var dateTime = "2018-12-13T07:33:35.893Z";
var x = DateTime.Parse(dateTime).ToString(#"MM\/dd\/yyyy");

C# DatePicker convert to DateTime and calculate the Age [duplicate]

This question already has answers here:
A property or indexer may not be passed as an out or ref parameter
(9 answers)
Closed 4 years ago.
I have a DatePicker(CPTestDP) in our WPF window, and the date picked is saved into SQL datebase as text. I would like to use calculate the Age(how many days) based on today's date by below code. But it turns error at CFTestDP.SelectedDate.
The error message says:
A property or indexer may not be passed as an out or ref parameter.
Could anyone help please? Much appreciate.
DateTime thisDay = DateTime.Today;
DateTime startDay = DateTime.TryParse(CFTestDP.SelectedDate, out CFTestDP.SelectedDate);
TimeSpan dateAge = thisDay - startDay;
txtAge.Text = string.Format("{dd}", dateAge);
As I have seen in the documentation you should pass as second parameter in the TryParse a reference to a variable of type DateTime and it will return a boolean that tells you if the parse was ok or not. So your code should be like this:
DateTime thisDay = DateTime.Today;
DateTime startDay;
bool result = DateTime.TryParse(CFTestDP.SelectedDate, out startDay);//CFTestDP.SelectedDate should be string
if(result)
{
TimeSpan dateAge = thisDay - startDay;
txtAge.Text = string.Format("{dd}", dateAge);
}
else
{
//Unable to parse
}
Source: https://msdn.microsoft.com/es-es/library/ch92fbc1(v=vs.110).aspx

Convert string with date & UTC offset to DateTime [duplicate]

This question already has answers here:
Convert UTC/GMT time to local time
(12 answers)
Closed 6 years ago.
I am trying to parse a string "20160918000500 +0200" to DateTime containing offset value "+0200".
I tried the following but it gives invalid DateTime exception.
DateTime dtDateTime = DateTime.Parse("20160918000500 +0200",new CultureInfo("yyyyMMddHHmmss zzz"));
Is there a way to convert the String exactly to Datetime with UTC offset value?
To preserve your Offset, use the DateTimeOffset.ParseExact method:
string str = "20160918000500 +0200";
var result = DateTimeOffset.ParseExact(str, "yyyyMMddHHmmss zzz", CultureInfo.InvariantCulture);
Console.WriteLine(result);
I would suggest to try out one of ParseExact methods of DateTime class

how to display only date from DateTime [duplicate]

This question already has answers here:
Display only date and no time
(11 answers)
Closed 8 years ago.
i m getting date from sql server database and it is displaying datetime as 1/15/2015 12:00:00 AM.
code in c# i used is:
dob_lbl.Text = reader[6].ToString();
//this is extracted using Sqlconnection so it's in array format.
i need only date to display.pls help.
try this:
string strDate = reader[6].ToString();
dob_lbl.Text = DateTime.ParseExact(strDate, "M/dd/yyyy hh:mm:ss tt",
CultureInfo.InvariantCulture).ToString("yyyy/MM/dd");
The ToShortDateString method of DateTime should help with this.
Use it like:
string strDate = reader[6].ToString();
DateTime dateTime = DateTime.Parse(strDate);
string justDateStr = dateTime.ToShortDateString();
You could simply split the string and use the first part of the resulting array.
Something like:
dob_lbl.Text = reader[6].ToString().Split()[0];

Categories