Java函数算法,增加分钟到时间
我正在编写一个函数,将分钟添加到时间字符串中,而不使用任何库来表示时间。该函数有两个参数-Java函数算法,增加分钟到时间,java,algorithm,time,modulo,timeofday,Java,Algorithm,Time,Modulo,Timeofday,我正在编写一个函数,将分钟添加到时间字符串中,而不使用任何库来表示时间。该函数有两个参数- 第一个是“time”([H]H:MM AM | PM)字符串,格式类似于12:00 AM或3:30 PM(12小时时钟,无(24小时锁定)军事时间输入) 第二个是整数参数(正或负),如分钟,即200 一切都很好,很漂亮,直到我发现增加了消极的分钟数。例如,当第一个参数输入为02:00am,第二个参数输入为-180时,我可以得到正确的答案,这将产生答案晚上11:00pm 我使用的算法是将我的输入字符串“ti
12:00 AM
或3:30 PM
(12小时时钟,无(24小时锁定)军事时间输入)200
02:00am
,第二个参数输入为-180
时,我可以得到正确的答案,这将产生答案晚上11:00pm
我使用的算法是将我的输入字符串“time”/第一个参数,即02:00am
,转换/映射为军事时间(24小时时钟),用于所有计算(因此我不必跟踪AM或PM),然后将整个内容转换为分钟,然后我转换为hours,并用24(因为一天是24小时)的%(模)得到hours部分答案,我使用之前计算的minutes和60的%(模)得到答案的minutes部分
在我上面给出的示例中(凌晨02:00)和(-180),将导致:
Math.floorMod(-1,24)
=23获得答案的小时数部分。仅使用%
就给出了1
的错误答案11:00pm
Math.floorMod(x,y)
,因为常规的模%
运算符对我不起作用,当我减去并得到需要取模的负数时。我现在尝试了不同的输入,比如上午9:13,半天时间是720分钟,全天时间是1440分钟,现在我得到了一些错误的答案
似乎当使用此模数算法将分钟添加到一个时间时,我总能得到正确的答案。我必须做一些不同的事情吗,现在我基本上是在减去分钟,最后可能是负数,取模24
请让我知道。恐怕您仍然会得到负分。您可以尝试添加例如-135分钟而不是-180分钟,然后看看会发生什么 我认为你最好还是撤销这些行动:
Math.floorMod(-60,24*60)
获得1380PS重复我的评论:对于生产代码,在一天中的某个时间使用
LocalTime
from,并使用其plusMinutes
和minutes
方法添加和减去分钟。这两种方法都接受正的和负的分钟数。为什么不使用任何库?如果是为了练习,这是一个很好的练习,但是对于生产代码,应该使用。你为什么把一天中的时间排成一行?对我来说,涉及数字的表示似乎更自然、更实用。比如从00:00开始的分钟数,从0到1439,只是举一个可以思考的例子。如果我们能够看到,甚至可以尝试运行您的代码,就更容易给出准确的答案。@OleV.V。我可以发布代码,但它有很多通用的/明显的东西,比如当我映射到24小时制(军事时间),它只是一个巨大的开关语句,它有很多代码/丑陋的,会很快填满页面。我认为伪代码可以,因为问题其实很简单,不管我写了多少。我看到你在下面贴了一个解决方案,我会在早餐后在这里验证:D谢谢