- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道延迟几分钟的方法,比如从22:50延迟到2:10。我在延迟方法的参数中插入了200,我担心将时间向前移动的方法不起作用,因为我尝试将时间设置为1:20并将100分钟(1小时40分钟)向前移动到23:40 。当我尝试运行代码时,输出显示时间向前移动后的 1:40。 moveForward(intlostMinute)方法中哪行错误?
class Time
{
private int hour; // between 0 - 23
private int minute; // between 0 - 59
public Time()
{
this(0, 0);
}
public Time(int hr, int min)
{
hour = (hr >= 0 && hr < 24) ? hr : 0;
minute = (min >= 0 && min < 60) ? min : 0;
}
public int getHour()
{
return hour;
}
public int getMinute()
{
return minute;
}
public void setHour(int hour)
{
this.hour = (hour >= 0 && hour < 24) ? hour : 0;
public void setMinute(int minute)
{
this.minute = (minute >= 0 && minute < 60) ? minute : 0;
}
public String toString()
{
return String.format("%02d:%02d", hour, minute);
}
public void delay(int newMinute)
{
minute = minute + newMinute;
if(minute >= 60)
{
// (minute / 60) is an integer division and truncates the remainder, which refers to (minute % 60)
hour = hour + (minute / 60);
minute = minute % 60;
if(hour >= 24)
{
hour = hour % 24;
}
}
}
public void moveForward(int lostMinute)
{
if(minute < lostMinute)
{
hour = hour - ((60 + minute) / 60);
minute = (minute + 60) % 60;
if(hour < 0)
{
hour = (24 + hour) % 24;
}
}
else
{
minute = minute - lostMinute;
}
}
}
我看到delay() 工作正常,而moveForward() 工作不正常。为了使时间符号更清晰地排序,我使用了 String.format("%02d:%02d")
指示 00:00 到 23:59 之间的时间。请注意,我没有使用 import java.util.Calender;
或'导入java.util.Date;因为我的项目的一部分包括按小时和分钟对数组进行排序。例如,如果我们尝试创建巴士总站项目,我们假设日期和日历在日程安排中并不重要。
public class MainTime
{
public static void main(String[] args)
{
Time t1 = new Time(23:50);
Time t2 = new Time(1:20);
Time t3 = new Time(4:50);
Time t4 = new Time(18:30);
Time t5 = new Time(14:15);
t1.delay(200);
t2.moveForward(100);
t3.delay(100);
t4.moveForward(20);
t5.moveForward(160);
System.out.println(t1.toString());
System.out.println(t2.toString());
System.out.println(t3.toString());
System.out.println(t4.toString());
System.out.println(t5.toString());
}
}
约束是当时间变化大于参数中的分钟以及小时将变为零时。当我在 NetBeans 中运行代码时,t1
当我在 delay(newMinute)
的 23:50 中添加 200 时,有 2:10方法; t2
当我从 moveForward(lostMinute)
中的 1:20 减去 100 时,得到了 1:40方法; t3
当我在 delay(newMinute)
的 4:50 中添加 100 时,有 6:30 ; t4
当我从moveForward(lostMinute)
中的18:30减去20时,有18:10 ; t5
当我从 moveForward(lostMinute)
中的 14:15 减去 160 时,得到 14:-25 。变量t2
和t5
执行后实际上应该分别是23:40和11:35。请确定 public void moveForward(int lostMinute)
中的哪些行从给定时间中减去分钟后得到不正确的输出。如果分钟变为零、60 和模数符号 %
可能有用;如果小时变为零、24 和模数 %
可能有用。我希望moveForward(lostMinute)
在 minute < 0
的情况下工作良好当 hour < 0
.
最佳答案
LocalTime t1 = LocalTime.of(23, 50);
t1 = t1.plusMinutes(200);
System.out.println(t1.toString()); // 03:10
LocalTime t2 = LocalTime.of(1, 20);
t2 = t2.minusMinutes(100);
System.out.println(t2.toString()); // 23:40
LocalTime t3 = LocalTime.of(4, 50);
t3 = t3.plusMinutes(100);
System.out.println(t3.toString()); // 06:30
LocalTime t4 = LocalTime.of(18, 30);
t4 = t4.minusMinutes(20);
System.out.println(t4.toString()); // 18:10
LocalTime t5 = LocalTime.of(14, 15);
t5 = t5.minusMinutes(160);
System.out.println(t5.toString()); // 11:35
输出作为注释给出。我想这就是你想要的。所以不要重新发明轮子。而不是自己滚动Time
类,使用LocalTime
。它可供您使用,它是为您开发和测试的。 LocalTime
是一天中 00:00 到 23:59:59.999999999 之间的时间。除了它包括秒和秒的小数部分之外,它与您的间隔一致。如果您从未将秒设置为 0 以外的值,则它们不会通过 toString
打印。方法。另外LocalTime
实现Comparable
,所以排序很简单。
请注意 LocalTime
对象是不可变的,因此它没有返回新的 LocalTime
的方法,而不是修改器方法。具有新值的对象。 plusMinutes
已经证明了这一点和minusMinutes
多于。也可以代替 myLocalTime.setHour(17);
您需要myLocalTime = myLocalTime.withHour(17);
等
您的moveForward
在将时间移回前一小时(例如从 14:05 到 13:55 或从 14:55 到 13:05)的情况下,该方法似乎可以正确处理小时。在这种情况下,您永远不会减去 lostMinutes
,我认为你应该以某种方式。当minute
是 0–59,则 ((60 + minute) / 60)
始终为 1,因此您总是减去 1 小时,而不是 2 或更多。
一般来说,delay
的参数的预期范围和moveForward
不清楚。我认为它们应该被记录下来,并且根据记录的限制验证论点。
Oracle tutorial: Date Time解释如何使用java.time
.
关于java - 当小时和分钟变量低于零时,moveForward(lostTime) 应如何给出正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50208322/
我有 0 小时、3 小时、12 小时、24 小时、48 小时的数据组……我想绘制这些数据的图表,以便保留时间的比例。 runs <- c(1:25) hours <- as.factor(c(0, 3
例如,如果我选择了时间:下午 3 点和小时数:5 小时,则得到 (8pm) 作为答案“ 最佳答案 let calendar = Calendar.current let date = calendar
我有一个包含两个日期时间字段的表单。用户输入日期 (yyyy-mm-dd) 和时间(3 个框;小时、分钟、上午/下午)。 出于某种原因,第一个没有保存为 24 小时制。 以下数据为输入结果: 2011
我一直在尝试使用导出单位进行计算,但到目前为止我还没有取得任何成果。 我已经尝试过mathjs ,但如果我输入 1 小时 * 1 英里/小时,我会得到 UnsupportedTypeError: Fu
我有两组要运行的 cronjob。第一个应该每 3 小时运行一次,第二个也应该每 3 小时运行一次,但比第一组晚一个小时。什么是正确的语法? // every 3 hours 17 */3 * *
我知道 AWS 中的预留实例更多的是计费而不是实际实例——它们没有附加到实际实例——我想知道: 如果我在特定区域和可用区中购买特定时间的预留实例 - 如果我每天 24 小时使用单个实例与运行 24 个
我试过: seq( from=as.POSIXct("2012-1-1 0", tz="UTC"), to=as.POSIXct("2012-1-3 23", tz="UTC"),
我有一个带有“日期”列的表。我想按小时分组指定日期。 最佳答案 Select TO_CHAR(date,'HH24') from table where date = TO_DATE('2011022
我知道如何在 SQL (SQL Server) 中获取当前日期,但要获取当天的开始时间: select dateadd(DAY, datediff(day, 0, getdate()),0) (res
我正在尝试在游戏之间创建一个计时器,以便用户在失去生命后必须等待 5 分钟才能再次玩游戏。但是我不确定最好的方法是什么。 我还需要它来防止用户在“设置”中编辑他们的时间。 实现这一目标的最佳方法是什么
我的查询有误。该错误显示预期的已知函数,得到“HOUR”。如果我删除这部分,查询将正常工作 (AND HOUR({$nowDate}) = 11) SELECT c FROM ProConvocati
var d1 = new Date(); var d2 = new Date(); d2.setHours(d1.getHours() +01); alert(d2); 这部分没问题。现在我试图在 (
我正在构建一个用于练习的基本时钟应用程序,但出于某种原因,时间不会自动更改为最新的分钟或小时。例如,当前时间是 17:56,但它显示的是 17:54,这是我打开应用程序的最后时间。 NSDate *n
我创建了一张图片,我想将其用作页面的 hr。当它被上传时,它一直向左对齐。我希望它居中,在标题下。这是我的 CSS 代码: .section-underline { height: 35px
这个问题已经有答案了: Getting difference in seconds from two dates in JavaScript (2 个回答) 已关闭 4 年前。 我想计算两个具有不同格
我需要计算到某个日期/时间的剩余时间(天/小时)。 但是,我没有使用静态日期。 假设我在 每个星期日 的 17:00 有一个事件。我需要显示到下一个事件的剩余时间,即即将到来的星期日 17:00。 我
我正在执行这个脚本: SELECT EXTRACT(HOUR FROM TIMEDIFF('2009-12-12 13:13:13', NOW())); 我得到:-838。这是提取时 MySQL 可以
复制代码 代码如下: /** * 小时:分钟的正则表达式检查<br> * <br> * @param pInput 要检查的字符串 * @return boolean 返
连wifi5元/小时 独领风骚 朕好帅 今晚你是我的人 十里桃花 高端定制厕所VP专用 一只老母猪 在家好无聊 你爹的wifi 密码是叫爸爸全拼 关晓彤和鹿晗分手了吗 蹭了我的
我有以下数据框列: 我需要将 csv 列中的对象字符串数据转换为总秒数。 示例:10m -> 600s 我试过这段代码: df.duration = str(datetime.timedelta(df
我是一名优秀的程序员,十分优秀!