考虑一下,我有一个在服务器场中执行的应用程序,其时区偏移量为-06:00
。但是用户界面仅显示偏移+02:00
的日期。我在C#中使用了DateTimeOffset
,在SQL Server(DateTimeOffset(0)
)中使用了2017 (RTM-GDR) (KB4505224) - 14.0.2027.2 (X64)
请考虑您正在服务器上执行以下代码:
var now = DateTimeOffset.Now;
var start = new DateTimeOffset(now.Year,now.Month,now.Day,now.Offset); // Offset `-06:00`
var end = start.AddDays(1);
return await connection.ExecuteScalarAsync<int>(
"SELECT IsnULL(MAX(IncrementalNumber) + 1,1) " +
"FROM Forms.Trips " +
"WHERE UserId = @userId " +
" AND CreationDate >= @start AND CreationDate < @end",new { userId,start,end });
该代码的目标是获取每个用户的每日增量编号。但是我发现了两个两者 IncrementalNumber
都设置为1
的奇怪记录:
2020-07-26 23:50:33 -06:00 -- (2020-07-27 07:50:33 +02:00 in the user interface offset)
2020-07-27 02:09:48 -06:00 -- (2020-07-27 10:09:48 +02:00 in the user interface offset)
问题在于,在用户界面中,我将每个服务器日期转换为表示层中的+02:00偏移,这些日期是指同一天(7月27日),因此我期望它们会是关联到另一个递增数字1和2。
这是我的表示层偏移量转换:
private static readonly TimeZoneInfo _italianTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
public static DateTime ToItalianTimestamp(DateTimeOffset dateTimeOffset)
{
var utc = dateTimeOffset.ToUniversalTime().DateTime;
return TimeZoneInfo.ConvertTimeFromUtc(utc,_italianTimeZoneInfo);
}
我在哪里弄错了?如何生成每个用户的每日增量数字,该数字也将以+02:00
偏移量每天?