Last active
June 9, 2021 19:25
-
-
Save NikiforovAll/75a368baa97c3e2cc72c7ecb53be2e01 to your computer and use it in GitHub Desktop.
DateTime vs DateTimeOffset
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Find difference between DateTime and DateTimeOffset\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"dotnet_interactive": { | |
"language": "csharp" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "6/9/2021 10:24:39 PM - 6/9/2021 7:24:39 PM = 02:59:59.9999903\r\n" | |
}, | |
"output_type": "unknown" | |
}, | |
{ | |
"data": { | |
"text/plain": "6/9/2021 10:24:39 PM +03:00 - 6/9/2021 7:24:39 PM +00:00 = -00:00:00.0000101\r\n" | |
}, | |
"output_type": "unknown" | |
} | |
], | |
"source": [ | |
"using System;\n", | |
"// Find difference between Date.Now and Date.UtcNow\n", | |
"var date1 = DateTime.Now;\n", | |
"var date2 = DateTime.UtcNow;\n", | |
"var difference = date1 - date2;\n", | |
"Console.WriteLine(\"{0} - {1} = {2}\", date1, date2, difference);\n", | |
"\n", | |
"// Find difference between Now and UtcNow using DateTimeOffset\n", | |
"var dateOffset1 = DateTimeOffset.Now;\n", | |
"var dateOffset2 = DateTimeOffset.UtcNow;\n", | |
"difference = dateOffset1 - dateOffset2;\n", | |
"Console.WriteLine(\"{0} - {1} = {2}\", dateOffset1, dateOffset2, difference);\n", | |
"// If run in the Pacific Standard time zone on 4/2/2007, the example\n", | |
"// displays the following output to the console:\n", | |
"// 4/2/2007 7:23:57 PM - 4/3/2007 2:23:57 AM = -07:00:00\n", | |
"// 4/2/2007 7:23:57 PM -07:00 - 4/3/2007 2:23:57 AM +00:00 = 00:00:00" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# DateTimeOffset\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"dotnet_interactive": { | |
"language": "csharp" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "datetimeoffset 6/2/2021 3:53:09 PM +03:00\r\n" | |
}, | |
"output_type": "unknown" | |
}, | |
{ | |
"data": { | |
"text/plain": "Current culture: en-US\r\nModel-bound value is: 2021-06-02T15:53:09.5540940+03:00, Kind is: Local\r\nModel-bound converted to UTC time value is: 2021-06-02T12:53:09.5540940Z, Kind is: Utc\r\nParsed time value is: 2021-06-02T15:53:09.5540940+03:00, Kind is: Local\r\nParsed UTC time value is: 2021-06-02T12:53:09.5540940Z, Kind is: Utc" | |
}, | |
"output_type": "unknown" | |
} | |
], | |
"source": [ | |
"using System;\n", | |
"using System.Globalization;\n", | |
"\n", | |
"var rawTime = \"2021-06-02T15:53:09.554094+03:00\";\n", | |
"var datetimeoffset = DateTimeOffset.Parse(rawTime);\n", | |
"\n", | |
"Console.WriteLine($\"datetimeoffset {datetimeoffset}\");\n", | |
"\n", | |
"var datetime = datetimeoffset.LocalDateTime;\n", | |
"\n", | |
"var result = $\"Current culture: {CultureInfo.CurrentCulture}\";\n", | |
"\n", | |
"// Format string \"O\" is ISO 8601 round-trippable https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings#Roundtrip\n", | |
"result += $\"\\r\\nModel-bound value is: {datetime.ToString(\"O\")}, Kind is: {datetime.Kind}\";\n", | |
"\n", | |
"var utcTime = datetime.ToUniversalTime();\n", | |
"result += $\"\\r\\nModel-bound converted to UTC time value is: {utcTime.ToString(\"O\")}, Kind is: {utcTime.Kind}\";\n", | |
"\n", | |
"var parsedTime = DateTime.Parse(rawTime);\n", | |
"result += $\"\\r\\nParsed time value is: {parsedTime.ToString(\"O\")}, Kind is: {parsedTime.Kind}\";\n", | |
"\n", | |
"var parsedTimeUtc = DateTime.Parse(rawTime, CultureInfo.CurrentCulture, DateTimeStyles.AdjustToUniversal);\n", | |
"result += $\"\\r\\nParsed UTC time value is: {parsedTimeUtc.ToString(\"O\")}, Kind is: {parsedTimeUtc.Kind}\";\n", | |
"\n", | |
"result\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# DateTime.UtcNow vs DateTime.Now" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"dotnet_interactive": { | |
"language": "csharp" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "timeUtcNow 6/9/2021 7:24:47 PM\r\n" | |
}, | |
"output_type": "unknown" | |
}, | |
{ | |
"data": { | |
"text/plain": "timeUtcNow 2021-06-09T19:24:47.6292838Z\r\n" | |
}, | |
"output_type": "unknown" | |
}, | |
{ | |
"data": { | |
"text/plain": "timeNow 6/9/2021 10:24:47 PM\r\n" | |
}, | |
"output_type": "unknown" | |
}, | |
{ | |
"data": { | |
"text/plain": "timeNow 2021-06-09T22:24:47.6294755+03:00\r\n" | |
}, | |
"output_type": "unknown" | |
} | |
], | |
"source": [ | |
"\n", | |
"var timeUtcNow = DateTime.UtcNow;\n", | |
"\n", | |
"Console.WriteLine($\"timeUtcNow {timeUtcNow}\");\n", | |
"Console.WriteLine($\"timeUtcNow {timeUtcNow.ToString(\"O\")}\");\n", | |
"\n", | |
"var timeNow = DateTime.Now;\n", | |
"\n", | |
"Console.WriteLine($\"timeNow {timeNow}\");\n", | |
"Console.WriteLine($\"timeNow {timeNow.ToString(\"O\")}\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"dotnet_interactive": { | |
"language": "csharp" | |
} | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": ".NET (C#)", | |
"language": "C#", | |
"name": ".net-csharp" | |
}, | |
"language_info": { | |
"file_extension": ".cs", | |
"mimetype": "text/x-csharp", | |
"name": "C#", | |
"pygments_lexer": "csharp", | |
"version": "9.0" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment