๐Ÿ”ท C# Time Handling Guide

Master C#'s DateTimeOffset, DateTime, and TimeZoneInfo for robust time handling in .NET applications.

โšก Quick Reference

โœ… Use

  • โ€ข DateTimeOffset for timestamps
  • โ€ข TimeZoneInfo for timezone operations
  • โ€ข DateTime.UtcNow for UTC times
  • โ€ข DateTimeKind.Utc explicitly
  • โ€ข TimeSpan for durations

โŒ Avoid

  • โ€ข DateTime.Now for storage
  • โ€ข DateTime without Kind specified
  • โ€ข Hardcoded timezone offsets
  • โ€ข TimeZone class (deprecated)
  • โ€ข Naive DateTime arithmetic

๐Ÿ• DateTime vs DateTimeOffset

When to Use Each Type

๐ŸŒ Timezone Operations

TimeZoneInfo and Conversions

๐Ÿ“ Parsing and Formatting

Robust Date Parsing

โฑ๏ธ Duration and Arithmetic

Safe Date Calculations

๐Ÿ—„๏ธ Entity Framework Integration

Database Time Handling

๐Ÿงช Testing Time Logic

Testable Time Code

๐Ÿ“ก JSON Serialization

API-Safe Time Serialization

โš ๏ธ Common Pitfalls

Things That Will Bite You

1. DateTime.Kind Confusion

Always specify DateTimeKind to avoid ambiguity.

2. DST Arithmetic Errors

Adding days during DST transitions can be tricky.