Avatar ·

DateTime vs DateTimeOffset em C#: quando e o que usar?

Olá, colegas! Sou um desenvolvedor C# iniciante e me deparei com um dilema: não consigo entender quando usar DateTime e quando usar DateTimeOffset. Ambos os tipos parecem armazenar data e hora, mas qual é a diferença fundamental?\n\nTenho uma aplicação web que trabalha com usuários de diferentes fusos horários. Preciso salvar a data de registro do usuário. Atualmente, faço assim:\n\n```csharp\nDateTime registrationDate = DateTime.Now;\n```\n\nMas depois li que `DateTime.Now` depende da hora local do servidor. Se o servidor mudar para outro fuso horário ou houver alteração de horário de verão/inverno — os dados podem "flutuar". Também me sugeriram que existe `DateTimeOffset`, que armazena o offset do UTC.\n\nPerguntas:\n1. Qual é a diferença entre DateTime e DateTimeOffset?\n2. Qual tipo escolher para armazenar eventos no banco de dados?