[英]read time from text file in java
我试图在Java中编写一些代码来读取文本文件,但是当它在(hh:mm)formate中读取时间时,如下所示:
6:30 14:30
还有我的Java代码将字符串转换为Data formate
DateFormat formatter = new SimpleDateFormat("hh:mm");
strLine = br.readLine();
strLine = strLine.trim();
tokens2 = strLine.split(" ");
System.out.println((Date)formatter.parse(tokens2[0]));
输出将是:
Thu Jan 01 06:30:00 AST 1970
它会给你长久的约会Date,而我只想取时区(06:30)。 我该怎么办 ? 任何建议。
编辑:乔达时间通过以下代码解决的问题:
LocalTime.parse(tokens2[0]);
只是需要时间
首先,您的时间模式是错误的-在示例中,您应该使用HH:mm
因为您使用的是24小时制。
其次,您正在解析一个Date
。 Date
只是时间上的一个瞬间:它不知道时区,日历,您是否只对时间,日期等感兴趣。
第三,您看到的是输出,因为您基本上只是在调用Date.toString()
。
Java中没有类型可以代表“一天中的某个时间”(顺便说一句,它与时区完全不同)。 您可以将Date
格式化为只包含时间部分,但是如果您要这样做,我强烈建议您使用UTC时区,以避免任何可能的DST问题。
更好的解决方案是使用具有LocalTime
类型的Joda LocalTime
非常适合您的情况。 您可以解析该内容( DateTimeFormatter.parseLocalTime
),然后对其进行适当的处理,并在需要时对其进行格式化(同样只是一次)。
我假设您想阅读和解析6:30
并将其输出为06:30
,对吧?
好吧,第一步是使用格式化程序,再次输出日期:
System.out.println(formatter.format((Date)formatter.parse(tokens2[0])));
顺便说一句,您的格式将无法正确格式化14:30
因为h
表示上午/下午的小时数,例如1-12。 您的格式应为HH:mm
,否则将得到输出02:30
而不是14:30
。
您可以通过两种方式使用SimpledateFormatter
。
您想在示例中同时使用它们。 首先,您想解析一个String并创建一个Date(即使您只是时间部分的兴趣爱好)。 在第二步中,您要根据此日期创建一个String并将其打印到System.out。
Date date=formatter.parse(tokens2[0]); //use the 'formatter' to parse the String
Sytem.out.println(formatter.format(date)); //use the 'formatter' to define the format of the output.
其他答案是正确的,但现在已经过时了。
java.time.LocalTime
类表示没有日期和时区的一天中的时间。 该类可以使用24小时制直接解析标准ISO 8601格式的字符串:HH:MM或HH:MM:SS
LocalTime lt = LocalTime.parse( "14:30" );
String output = lt.toString(); // 14:30
如果需要其他格式,请使用DateTimeFormatter
。 甚至自动本地化。
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL );
f = f.withLocale( Locale.CANADA_FRENCH ); // Cultural norms & human language
String output = lt.format( f );
java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧日期时间类,例如java.util.Date
, .Calendar
和java.text.SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time。
要了解更多信息,请参见Oracle教程 。 并在Stack Overflow中搜索许多示例和说明。
多的java.time功能后移植到Java 6和7在ThreeTen-反向移植并且还适于使用Android在ThreeTenABP 。
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如Interval
, YearWeek
, YearQuarter
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.