如何创建一个从不同值的数据库中检索数据列的方法(例如20040804142000,20040805034000)?
值为YYYYMMDDHHMMSS,我想将它们从上午12点转换为分钟。有没有任何方法可以转换我需要的所有数据并将其实现到我的声明中。
e.g。输出将是
20040805034000> 220
答案 0 :(得分:2)
因此,从How to parse/format dates with LocalDateTime? (Java 8)和DateTimeFormatter
开始,您可以使用类似的内容将String
值转换为LocalDateTime
String value = "20040805034000";
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
LocalDateTime ldt = LocalDateTime.parse(value, format);
System.out.println(ldt);
哪个输出2004-08-5T03:40
。
接下来,您可以使用ChronoUnit.SECONDS.between
来计算两次之间的秒数,但这意味着您需要一个锚定时间,在您的情况下将是午夜......
LocalDateTime midnight = ldt.withHour(0).withMinute(0).withSecond(0).withNano(0);
long seconds = ChronoUnit.SECONDS.between(midnight, ldt);
System.out.println(seconds);
哪个输出13200
如果您不能使用Java 8,请改用Joda-Time。所以从Converting a date string to a DateTime object using Joda Time library和Java (Joda): Seconds from midnight of LocalDateTime
开始String value = "20040805034000";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss");
LocalDateTime dt = formatter.parseLocalDateTime(value);
System.out.println(dt);
LocalDateTime midnight = dt.withMillisOfDay(0);
long seconds = Seconds.secondsBetween(midnight, dt).getSeconds();
System.out.println(seconds);
答案 1 :(得分:0)
您可以尝试使用像joda-time这样的库。如果你想要一个更基本的答案,你可以试试这个:
public int getMinutesSinceMidnight(String s){
int hour = Integer.parseInt(s.substring(8,10));
int mins = Integer.parseInt(s.substring(10,12));
return hour*60+mins;
{