我有一个与这个类似的问题:How to strip timezone from DateTime in .NET Core,但我不想使用任何基于字符串的解析.
基本上,我有来自世界各地的活动,它们的时间戳用DateTime.Now
个收集
我想报告带有相应的本地创建时间戳(不是utc)的事件.
So given that each datetime is basically represented like this:
2024-05-08T17:31:53.9744487+03:00
我只想提取2024-05-08T17:31:53.9744487
作为Date Time,以便我可以报告事件的当地时间.
我不想像上面的答案中那样进行任何字符串解析(或任何字符串操作),因为这些很容易出现错误.
这是我想通过的一个测试 case :
[Fact]
public void DateTimeConversionTest()
{
// Arrange
var testDateTime = DateTime.Parse("2024-05-08T17:31:53.9744487+03:00");
var expectedTimeString = "17:31:53";
// Act
var convertedDateTime = testDateTime; // convert DateTime to local DateTime here
var convertedTimeString = convertedDateTime.ToString("HH:mm:ss");
// Assert
Assert.Equal(expectedTimeString, convertedTimeString);
}
这似乎是一个用C#解决起来非常困难的问题,因为我找不到任何在线工作的东西.
有人知道如何解决吗?
编辑:经过Derrick和Guru下面的解释,我意识到这个问题不正确,因为从字符串解析的日期立即失go 了时区偏差.因此解决方案是使用DateTimeOffset