gpt4 book ai didi

java - Java 中的顺序日期和时间

转载 作者:行者123 更新时间:2023-11-29 07:48:08 25 4
gpt4 key购买 nike

我输入一个日期并获得一个有序的(12 小时)时间戳集合,其中保证第一个元素从该日期开始。给定一次输入,时间戳可能会跨越多天。我认为在任何情况下时间戳间隔不会超过 24 小时。

我需要一种方法来处理时间,并在翻转的情况下将它们转换为完整日期,以便日期正确递增。

日期和时间都存储为日期对象。 (我的输入实际上是一个排序的 ArrayList<Date> 因为我有数百个文件要处理)

例如:

> 2014.05.13

01:02:03 AM
10:54:21 PM
10:59:32 PM
11:34:00 PM
11:59:54 PM
12:01:00 AM
01:02:03 AM

我想要一个像这样的日期集合:

[2014-05-13 01:02:03 AM,
2014-05-13 10:54:21 PM,
2014-05-13 10:59:32 PM,
2014-05-13 11:34:00 PM,
2014-05-13 11:59:54 PM,
2014-05-14 12:01:00 AM,
2014-05-14 01:02:03 AM]

创建此集合的好方法是什么?我正在使用 Java 8。


编辑:感谢https://stackoverflow.com/a/23646930/1467811的建议在循环中添加日期。这是我的解决方案的一些伪代码,因为解析逻辑比这复杂得多。

// 2014-01-21.165900-0500EST
// 2014-05-03.124529-0400EDT
DateFormat df = new SimpleDateFormat("yyyy-MM-dd.HHmmssZz", Locale.ENGLISH);
ArrayList<Date> logDates = new ArrayList<>();

// <snip> ... get array of dates ...

Collections.sort(logDates);

DateFormat msgDf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a", Locale.ENGLISH);
Date lastDate;

for (Date d : logDates) {
lastDate = d;
Path p = GetFilePathFromDate(d);
for (String line : Files.readAllLines(p)) {
String time = ExtractTimeFromLine(line); // ex. "12:01:00 AM"
Date msgDate = msgDf.parse(new SimpleDateFormat("yyyy-MM-dd")
.format(lastDate) + " " + time);
if (msgDate.before(lastDate)) { // must have passed over a day
Calendar curCal = Calendar.getInstance();
curCal.setTime(msgDate);
curCal.add(Calendar.DAY_OF_MONTH, 1);

msgDate = curCal.getTime();
}
lastDate = msgDate;

// msgDate now has the correct date associated with its time
// ex. "2014-05-14 12:01:00 AM"
// do stuff with msgDate
}
}

最佳答案

在你的约会中添加一些时间并在你的集合中添加循环......

您可以通过以下链接获得有关如何在日期中添加时间的帮助

Java : how to add 10 mins in my Time

 String myTime = "14:10";
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
Date d = df.parse(myTime);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());

关于java - Java 中的顺序日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23646803/

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