Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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# 两次之间的nodatime总分钟数_C#_Nodatime - Fatal编程技术网

C# 两次之间的nodatime总分钟数

C# 两次之间的nodatime总分钟数,c#,nodatime,C#,Nodatime,我经常在c#中使用NodaTime,这非常棒,但在尝试获取两个LocalDateTime之间的总分钟数时被发现。我的两次约会相隔一个多星期 这不会产生有效的结果: (一) 这确实提供了正确的结果: (二) 所以我的问题实际上是三个问题: 为什么NodaTime没有TotalMinutes函数 为什么上面(1)项不起作用 有没有比(2)更简洁的方法呢?只需使用Period.Between静态方法,并指定输出所用的单位 Period p = Period.Between(start, end, Pe

我经常在c#中使用NodaTime,这非常棒,但在尝试获取两个LocalDateTime之间的总分钟数时被发现。我的两次约会相隔一个多星期

这不会产生有效的结果: (一)

这确实提供了正确的结果: (二)

所以我的问题实际上是三个问题:

为什么NodaTime没有TotalMinutes函数

为什么上面(1)项不起作用


有没有比(2)更简洁的方法呢?

只需使用
Period.Between
静态方法,并指定输出所用的单位

Period p = Period.Between(start, end, PeriodUnits.Minutes);
long totalMinutes = p.Minutes;
如果不明确指定
PeriodUnits
,则默认为
PeriodUnits.DateAndTime
。这将返回一个
期间
,该期间填充了所有可能的日期和时间属性(周除外),因此
分钟
属性的分钟数仅少于一小时


换句话说,在不指定单位的情况下使用
Period.Between
就像在
TimeSpan
上要求
Minutes
,而指定
PeriodUnits.Minutes
就像在TimeSpan上要求
TotalMinutes
。您可以使用
Period
Minutes
属性,它只是控制
Period
的构造方式。

只需使用
Period.Between
静态方法,并指定希望输出以何种单位表示即可

Period p = Period.Between(start, end, PeriodUnits.Minutes);
long totalMinutes = p.Minutes;
如果不明确指定
PeriodUnits
,则默认为
PeriodUnits.DateAndTime
。这将返回一个
期间
,该期间填充了所有可能的日期和时间属性(周除外),因此
分钟
属性的分钟数仅少于一小时


换句话说,在不指定单位的情况下使用
Period.Between
就像在
TimeSpan
上要求
Minutes
,而指定
PeriodUnits.Minutes
就像在TimeSpan上要求
TotalMinutes
。您可以使用
Period
Minutes
属性,它只是控制
Period
的构造方式。

您确定您应该在这里使用本地日期和时间吗?当你谈论“两人之间的总分钟数”时,听起来你更可能对一段时间而不是一段时间感兴趣。特别是一个“触发器”听起来像是某个特定时区的某个东西,代表一个瞬间。也许您应该使用适当的时区将这两个值转换为瞬间,然后计算它们之间的持续时间?您确定您应该在这里使用本地日期和时间吗?当你谈论“两人之间的总分钟数”时,听起来你更可能对一段时间而不是一段时间感兴趣。特别是一个“触发器”听起来像是某个特定时区的某个东西,代表一个瞬间。也许你应该使用适当的时区将这两个值转换为瞬间,然后计算它们之间的持续时间?@Jon,收到你的评论-谢谢。是的,这种特殊情况可以通过任何一种方式来实现,但通过ZonedDateTime/Instant路径使用持续时间会稍微灵活一些。因此,我选择了LocalDateTime/Period路径,并迷上了我错过的一个技术细节。这正是我想要的,并回答了我最初的三个问题。感谢您的回复。随着时间的推移,一个人必须非常小心!当我尝试这个解决方案时,我得到了一个异常:“Units包含时间单位:分钟参数名称:Units”@MikeMurphy-也许你传递了
LocalDate
值,而不是
LocalDateTime
?@Jon,收到了你的评论-谢谢。是的,这种特殊情况可以通过任何一种方式来实现,但通过ZonedDateTime/Instant路径使用持续时间会稍微灵活一些。因此,我选择了LocalDateTime/Period路径,并迷上了我错过的一个技术细节。这正是我想要的,并回答了我最初的三个问题。感谢您的回复。随着时间的推移,一个人必须非常小心!当我尝试此解决方案时,会出现以下异常:“Units包含时间单位:分钟参数名称:Units”@MikeMurphy-可能您传递的是
LocalDate
值,而不是
LocalDateTime
Period p = Period.Between(start, end, PeriodUnits.Minutes);
long totalMinutes = p.Minutes;