标签: period

有什么方法可以将JodaTime周期转换为十进制小时数?

我有一个JodaTime Period,我是从两个DateTime时刻创建的.有没有一种方法可以将该期间转换为十进制小时数?

例如,我有一个时间段,从2010年1月1日下午1点到1点30分.我怎样才能将该时间段视为1.5小时.

在过去,我使用秒和BigDecimals手动转换,例如:

int seconds = myPeriod.toStandardSeconds().getSeconds();
BigDecimal d = new BigDecimal((double) seconds / 3600);
// Round to two decimals
BigDecimal correctResult = d.setScale(2, RoundingMode.HALF_DOWN);
Run Code Online (Sandbox Code Playgroud)

这种感觉就像一个黑客,当我开始将Periods加在一起时更别提尴尬了.似乎应该有更好的方法.

有任何想法吗?谢谢

java period jodatime

11
推荐指数
1
解决办法
6271
查看次数

Java - 解析日期/期间的优雅方式?

根据ISO-8601标准,有4种表达间隔/持续时间的方式:

  1. 开始和结束,例如"2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"

  2. 开始和持续时间,例如"2007-03-01T13:00:00Z/P1Y2M10DT2H30M"

  3. 持续时间和结束,例如"P1Y2M10DT2H30M/2008-05-11T15:30:00Z"

  4. 持续时间,例如"P1Y2M10DT2H30M",带有附加的上下文信息

仅使用Java 8(没有Joda,扩展等),是否有处理案例1-3的优雅方法?

我知道Duration.Parse()并且Period.Parse(),但我想知道是否有一种处理这4种情况的优雅方式.例如:

String datePeriod = "2016-07-21/P6D";
String twoDates   = "2016-07-21/2016-07-25";

Duration d = Duration.parse(datePeriod); // DateTimeParseException
Duration p = Duration.parse(twoDates); // same
Run Code Online (Sandbox Code Playgroud)

我目前的思维过程非常草率,我百分百肯定有更好的方法.对于每种情况,使用嵌套的try/catch块分别处理4个案例,这看起来有点像反模式,如果有的话.(拆分/,解析第一个块的日期,检查错误,解析第一个块的时间段,解析第二个块的日期,检查错误......你明白了)

任何提示将非常感谢!

-

此外,ISO 8601时间间隔解析在Java中的答案并没有真正帮助我,因为最顶层的答案只关心这些PT...东西.

java datetime duration period java-8

11
推荐指数
1
解决办法
1088
查看次数

使用具有键值的句点的数组

我从数组中获取数据.由于某种原因,该数组具有键值[3.3],我无法从中检索数据.

我有这个数组[3.3] => First Name [3.6] => Last Name[2] => email@example.com.

当我尝试调用$array[3.3]它时返回null,但是当我打电话给$array[2]我时,我收到了电子邮件.有任何想法吗?

php arrays period

9
推荐指数
3
解决办法
8888
查看次数

如果在php字符串中间使用'周期'字符(.)是什么意思?

我对PHP很新,但我似乎无法在谷歌找到这个问题的解决方案.

这是一些示例代码:

$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
Run Code Online (Sandbox Code Playgroud)

句点字符在每个字符串的中间做了什么?

即:"blabla"."blabla"."blablalba";

php string character period

9
推荐指数
2
解决办法
3万
查看次数

Perl期间与逗号运算符

有谁知道为什么

print "$str is " , ispalindrome($str) ? "" : " not" , " a palindrome\n" 
Run Code Online (Sandbox Code Playgroud)

打印"女士是回文"

print "$str is " . ispalindrome($str) ? "" : " not" . " a palindrome\n"
Run Code Online (Sandbox Code Playgroud)

打印"1"?

perl comma period

9
推荐指数
1
解决办法
898
查看次数

如何检测浮点数在C#中是否有重复的十进制扩展?

我只需要知道如何在浮点数中检测重复的十进制扩展.

例:

0.123456789123456789

该数字的重复部分为123456789.

我想用C#自动化这个,有没有智能解决方案?

c# math floating-point design-patterns period

9
推荐指数
2
解决办法
3429
查看次数

为什么java.time.Period#normalized()无法将天标准化?

在Java类中,java.time.Period该方法normalized()Javadoc中包含以下内容:

这将使年和月单位标准化,而使天单位保持不变。

超类的方法在其Javadoc中具有以下内容:

规范化过程特定于每个日历系统。例如,在ISO日历系统中,年和月被标准化,而天未被标准化,[...]

我无权访问ISO 8601-1:2019的实际文本,也不想在上面花费数百个[在此处插入货币](我想标准化可能在第1部分中描述:基本规则而不是在第2部分:扩展中)。

有人可以阐明为什么Period#normalized()不使天数正常化吗?它是否真的直接来自ISO 8601本身,是在其他地方指定的,还是仅特定于Java实现的?

java datetime iso8601 period java-time

9
推荐指数
1
解决办法
157
查看次数

将Period添加到startDate不会产生endDate

我有两个LocalDate声明如下:

val startDate = LocalDate.of(2019, 10, 31)  // 2019-10-31
val endDate = LocalDate.of(2019, 9, 30)     // 2019-09-30
Run Code Online (Sandbox Code Playgroud)

然后我使用Period.between函数计算它们之间的周期:

val period = Period.between(startDate, endDate) // P-1M-1D
Run Code Online (Sandbox Code Playgroud)

此处的期间为负数的月份和天数,如果endDate早于,则可以预期startDate

但是,当我将其添加period回时startDate,得到的结果不是endDate,而是前一天的日期:

val endDate1 = startDate.plus(period)  // 2019-09-29
Run Code Online (Sandbox Code Playgroud)

所以问题是,为什么不不变

startDate.plus(Period.between(startDate, endDate)) == endDate

保留这两个日期?

Period.between谁返回了不正确的期限,还是LocalDate.plus谁添加了不正确的期限?

period date-difference kotlin java-time localdate

8
推荐指数
1
解决办法
194
查看次数

如何比较java 8中的两个java.time.Period?

如何比较 java 8 中的两个句点?

例如

Period one = Period.of(10,0,0);
Period two = Period.of(8,0,0);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,一大于二。

java date period java-8

7
推荐指数
2
解决办法
1万
查看次数

向 pandas 的 period 对象添加 n 个月?

这看起来应该很容易,但我在谷歌搜索时找不到答案。假设我有一些类型为 pandas.Period 的变量 k,其值为:

Period('2018-11', 'M')
Run Code Online (Sandbox Code Playgroud)

如何向该变量添加 n 个月。例如,如果 n 是 3 我希望 k 是

Period('2019-02', 'M')
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下方法:

k.month = k.month + 12
Run Code Online (Sandbox Code Playgroud)

但这失败了:

AttributeError: attribute 'month' of 'pandas._libs.tslibs.period._Period' objects is not writable
Run Code Online (Sandbox Code Playgroud)

python period pandas

7
推荐指数
2
解决办法
3101
查看次数