gpt4 book ai didi

java - 我将日期转换为分钟有什么错误?

转载 作者:行者123 更新时间:2023-12-01 07:18:13 25 4
gpt4 key购买 nike

基于How to convert Standard Date into minutes in java?信息,我遵循这种技术将日期转换为分钟,但输出不是预期值(例如,12 小时 -> 应该是 720 分钟)。

这是我的源代码

    SimpleDateFormat sdf = new SimpleDateFormat("hh");
Date theDate = sdf.parse ("12");
long minutes22 = (theDate.getTime() / 1000) / 60;
System.out.println("Minute "+minutes22);

输出为-420。有人可以给我解释一下吗?

<第一个问题已经解决,请看评论区>

新问题是切割字符串。<问题也解决了,请看评论区>

对于另一个输入,我尝试做自己的解决方案,但在完成切割字符串后出现问题。我发现重复的值不能单独保存。我不知道为什么会发生,因为我保存在不同的索引中。有什么建议吗?

这是我的另一个源代码。

    String date = "Sun 10:00-20:00\r\n" + 
"Fri 05:00-10:00\r\n" +
"Fri 16:30-23:50\r\n" +
"Sat 10:00-24:00\r\n" +
"Sun 01:00-04:00\r\n" +
"Sat 02:00-06:00\r\n" +
"Tue 03:30-18:15\r\n" +
"Tue 19:00-20:00\r\n" +
"Wed 04:25-15:14\r\n" +
"Wed 15:14-22:40\r\n" +
"Thu 00:00-23:59\r\n" +
"Mon 05:00-13:00\r\n" +
"Mon 15:00-21:00";

List<String> Hour = new ArrayList<String>();
int loop = 0;

String [] replacement = {"sun","mon","tue","wed","thu","fri","sat"};
String new_s = date.toLowerCase().replaceAll(" ","");

for(int j = 0;j<replacement.length;j++)
{
new_s = new_s.replace(replacement[j],"").replace("\r\n","");


}

String temp = "";
temp = temp+new_s.replaceAll("-","");

int show = 0;
while(!temp.equals(""))
{
Hour.add(temp.substring(loop,loop+5));
temp = temp.replace(temp.substring(0,loop+5),"");
System.out.println("Hour "+Hour.get(show));
show++;

}

这是输出

时间 10:00
时间 20:00
时间 05:00
时间 16:30
时间 23:50
时间 24:00
时间 01:00
时间 04:00
时间 02:00
时间 06:00
时间 03:30
时间 18:15
时间 19:00
时间 04:25
时间 15:14
时间 22:40
时间 00:00
时间 23:59
时间 13:00
时间 15:00
时间 21:00

另一个问题 - 为什么它会打印出 < 0 而不是 1200 >

 LocalTime froms = LocalTime.parse("20:00", DateTimeFormatter.ofPattern("HH:mm", Locale.ENGLISH));
System.out.println("TIme "+froms.getMinute());'

最佳答案

tl;博士

Duration.ofHours(12).toMinutes()

720

java.time.Duration

您正在使用有问题的旧遗留日期时间类。而且,你还被他们虐待。

Date 类已被 Instant 类取代。两者都代表一个时刻,时间轴上的一个点。不要滥用它们来代表“十二小时”。

显然您想要表示与时间轴无关的一段时间。因此,请使用为此目的而设计的类,Duration

Duration d = Duration.ofHours(12);

要查看整个持续时间内的总分钟数,请调用 toMinutes

long minutes = d.toMinutes();
<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

您可以直接与数据库交换java.time对象。使用JDBC driver符合JDBC 4.2或稍后。不需要字符串,不需要 java.sql.* 类。

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和more .

关于java - 我将日期转换为分钟有什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50427030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com