英文:
is their any inbuilt method to check the difference between two dateTime in android?
问题
我想在 Android 中获得以下输出:
val oldTime = 从共享偏好中获取的时间() // 格式:DD:MM:YYYY HH:MM:SS
val newTime = 当前时间() // 格式:DD:MM:YYYY HH:MM:SS
val output = newTime - oldTime // 格式应为分钟或秒
另外,我如何以 `DD:MM:YYYY HH:MM:SS` 格式获取当前时间?
英文:
I want to get the following output in android:
val oldTime = timeStoredInSharedPreference() // format : DD:MM:YYYY HH:MM:SS
val newTime = currentTime() // format : DD:MM:YYYY HH:MM:SS
val output = newTime - OldTime // Format should be - in minutes or seconds
also, how do I get the current time in the format DD:MM:YYYY HH:MM:SS
?
答案1
得分: 3
自Java 8以来,您可以使用LocalDateTime和Duration来计算它。
LocalDateTime now = LocalDateTime.now();
LocalDateTime sixMinutesBehind = now.minusMinutes(6);
Duration duration = Duration.between(now, sixMinutesBehind);
long diff = Math.abs(duration.toMinutes());
英文:
Since Java 8 you can calculate it with LocalDateTime and Duration
LocalDateTime now = LocalDateTime.now();
LocalDateTime sixMinutesBehind = now.minusMinutes(6);
Duration duration = Duration.between(now, sixMinutesBehind);
long diff = Math.abs(duration.toMinutes());
答案2
得分: 1
从 Java-9 开始,您可以使用 Duration#toMinutes
和 Duration#toSeconds
。请注意,Duration#toMinutes
从 Java-8 开始就存在,但 Duration#toSeconds
是从 Java-9 开始引入的,因此如果您在使用 Java-8,可以使用 Duration#toMillis / 1000
代替 Duration#toSeconds
。
示例:
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String strOldDateTime = "24:7:2020 10:10:10";
// 定义格式
DateTimeFormatter format = DateTimeFormatter.ofPattern("d:M:yyyy HH:mm:ss");
// 使用定义的格式解析日期时间
LocalDateTime oldDateTime = LocalDateTime.parse(strOldDateTime, format);
// 当前时间
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(oldDateTime, now);
// 显示分钟和秒的差异
// ###########Java-8#############
System.out.println(duration.toMinutes() + " 分钟 " + (duration.toMillis() / 1000) % 60);
// ###########Java-9 及以后版本#############
System.out.println(duration.toMinutes() + " 分钟 " + duration.toSeconds() % 60);
}
}
输出:
106 分钟 17
106 分钟 17
英文:
With Java-9 onwards, you can use Duration#toMinutes
and Duration#toSeconds
. Note that Duration#toMinutes
has been there since Java-8 but Duration#toSeconds
came with Java-9, and therefore you can use Duration#toMillis / 1000
instead of Duration#toSeconds
if you are using Java-8.
Demo:
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String strOldDateTime = "24:7:2020 10:10:10";
// Define the format
DateTimeFormatter format = DateTimeFormatter.ofPattern("d:M:yyyy HH:mm:ss");
// Parse date-time as using the defined format
LocalDateTime oldDateTime = LocalDateTime.parse(strOldDateTime, format);
// Now
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(oldDateTime, now);
// Display the difference in minutes and seconds
// ###########Java-8#############
System.out.println(duration.toMinutes() + " minutes " + (duration.toMillis() / 1000) % 60);
// ###########Java-9 onwards#############
System.out.println(duration.toMinutes() + " minutes " + duration.toSeconds() % 60);
}
}
Output:
106 minutes 17
106 minutes 17
答案3
得分: 1
@Test
fun test() {
val dateTimeFormatter = DateTimeFormatter.ofPattern("dd:MM:yyyy HH:mm:ss")
val oldTime = LocalDateTime.parse("24:07:2020 11:22:33", dateTimeFormatter)
val newTime = LocalDateTime.parse("24:07:2020 11:32:33", dateTimeFormatter)
Duration.between(oldTime, newTime).seconds shouldBe 10 * 60
}
英文:
@Test
fun test() {
val dateTimeFormatter = DateTimeFormatter.ofPattern("dd:MM:yyyy HH:mm:ss")
val oldTime = LocalDateTime.parse("24:07:2020 11:22:33", dateTimeFormatter)
val newTime = LocalDateTime.parse("24:07:2020 11:32:33", dateTimeFormatter)
Duration.between(oldTime, newTime).seconds shouldBe 10 * 60
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论