Skip to content

Instantly share code, notes, and snippets.

@NikiforovAll
Last active June 9, 2021 19:25
Show Gist options
  • Save NikiforovAll/75a368baa97c3e2cc72c7ecb53be2e01 to your computer and use it in GitHub Desktop.
Save NikiforovAll/75a368baa97c3e2cc72c7ecb53be2e01 to your computer and use it in GitHub Desktop.
DateTime vs DateTimeOffset
Display the source blob
Display the rendered blob
Raw
{
"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