Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DateTime转换为整数_C#_Asp.net Mvc_Asp.net Web Api2 - Fatal编程技术网

C# 将DateTime转换为整数

C# 将DateTime转换为整数,c#,asp.net-mvc,asp.net-web-api2,C#,Asp.net Mvc,Asp.net Web Api2,当我试图将DateTime转换为int类型时,我在web API方法中得到的时区偏移值为0,它在控制器中的值为today date time,该值已分配给控制器中的一种类型的变量,但API需要int 控制器 Web API DateTimeOffset.Now.Offset的类型为TimeSpan,不能强制转换为int。请参阅。如果可以建立某种基本时间,可以将DateTime.Ticks转换为整数表示形式 只是一个警告:DateTime.Ticks的类型为Int64 long,不能压缩为Int3

当我试图将DateTime转换为int类型时,我在web API方法中得到的时区偏移值为0,它在控制器中的值为today date time,该值已分配给控制器中的一种类型的变量,但API需要int

控制器

Web API


DateTimeOffset.Now.Offset的类型为TimeSpan,不能强制转换为int。请参阅。

如果可以建立某种基本时间,可以将DateTime.Ticks转换为整数表示形式

只是一个警告:DateTime.Ticks的类型为Int64 long,不能压缩为Int32 int,因此您需要决定需要几分钟、几天等的精度级别,然后去掉不必要的组件以将数字拟合为整数

要引用文档,请执行以下操作: 如果基准时间是2007年12月14日15:23,那么自21世纪初以来,滴答声的数量将是:

21933858000000000纳秒不适合整数 3655643.00分钟就可以了! 有关更多信息,请参阅的文档 在这里,他们使用TimeSpan来获得秒数

long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks;
TimeSpan elapsedSpan = new TimeSpan(elapsedTicks);
Console.WriteLine("   {0:N2} minutes", elapsedSpan.TotalMinutes);
// 3,655,643.00 minutes

您可以使用TimeZoneInfo获取当前时区信息,然后从TimeSpan获取总分钟数,如

例如,如果您当前的时区是印度,那么您将从上述代码中获得5小时30分钟

输出:

然后,如果您想要这个以分钟为单位的时间组件,那么您可以使用TimeSpan的TotalMinutes属性,比如

所以上面的totalMinutes给你330分钟,这意味着你的时区印度比UTC提前330分钟

或者,如果您想指定一个特定的时区,那么您可以像

TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
TimeSpan ts = cst.GetUtcOffset(DateTime.Now);

因此,上面的TimeSpan为您提供了时区CST的偏移量

请不要对捕获异常进行编码。这是一种错误的反模式。当我尝试将DateTime转换为int类型时,我在web API方法中得到的时区偏移量值为0,控制器中的值为今天日期时间,该日期时间已分配给控制器中的一种类型的变量,但api预期为int。-什么?!-也许你可以澄清一下你的意思?@Enigmativity只是为了找到我保留的例外。谢谢,我将删除它。只是为了找到我保留的异常-这意味着什么?我在控制器中有一个方法,其中我使用了var timezoneOffsetValue=DateTimeOffset.Now.Offset;当我将相同的参数传递给web api时,它显示为0。我对将其转换为int感到惊讶。您能用您的更改修改我的代码吗?当我将参数从控制器传递到web api时,它显示为0。控制器到web api中是否可以没有参数?是否希望您的时区为当前时区或任何特定时区?请在控制器中尝试此操作=>如果用户!=null{TimeSpan ts=TimeZoneInfo.Local.GetUtcOffsetDateTime.Now;double totalMinutes=ts.totalMinutes;requestUri=string.Formatapi/Link/getLinks/{0},user.TenantId,totalMinutes;}这在web api控制器的内部foreach=>t.CreatedDate=DateTime.Parset.CreatedDate.AddMinutestimezoneOffsetValue.ToStringDataFormat、CultureInfo.InvariantCulture;从控制器到web api需要传递什么参数?timezoneOffsetValue在web api中为0,但我在控制器的ts中有datetime。我需要将什么样的参数从控制器传递到web api?
long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks;
TimeSpan elapsedSpan = new TimeSpan(elapsedTicks);
Console.WriteLine("   {0:N2} minutes", elapsedSpan.TotalMinutes);
// 3,655,643.00 minutes
TimeSpan ts = TimeZoneInfo.Local.GetUtcOffset(DateTime.Now);
double totalMinutes = ts.TotalMinutes;
TimeZoneInfo cst = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
TimeSpan ts = cst.GetUtcOffset(DateTime.Now);