您正在使用麻烦的旧的约会时间课程 现在由java.time课程取代。
Wrong input data
您的第一个示例字符串不正确, 因为 21 是星期一而不是星期二 。 与 22 对应的第二个示例字符串是正确的, 并在下面的示例代码中使用 。
Using java.time
避免对日期- 时间值的文字表达使用这种格式 。 特别是, 永远不要使用以这种格式看到的3-4个字母缩写, 如 EST code > 或 IST code >, 因为它们不是真正的时区, 没有标准化, 甚至不是独一无二 (!) 。 请指定一个 < a href=" "https:// en.wikipedia. org/wiki/List_of_tz_ zones_ by_ name" rel= "nofolfollown noreferrer" > > a proccount time name a > 。 在此特定情况下, java.time 可以将这种缩写为 < code> GMT
翻译为 < a href=" https:// en.wikipedia.org/ wiki/ Coordandardd_ Universal_Time" rel= " rel=" "Noferreferr > > > > > > > > UTC < UTC a >, 但 。
String input = "Tue May 22 14:52:00 GMT 2012";
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "EEE MMM dd HH:mm:ss z uuuu" ).withLocale ( Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse ( input , f );
System.out.println ( "zdt: " + zdt );
调放到控制台 。 to String
方法产生一个字符串, 标准为 < a href=" https://en.wikipedia.org/wiki/ISO_ 861, rel="nofollow noreferrer" > ISO 8601 格式, 扩展后附加括号中区的名称。 这些标准格式对于您需要将日期- 时间值序列到文本时来说, 是一个更好的选择 。
System.out.println ( "zdt: " + zdt );
zdt: 2012-05-22-22T14:52Z[GMT]
Generate String
您可以在任何您想要的格式中生成一个字符串来代表此值 。 一般来说, 最好让 java. time 自动本地化, 使用 < a href="https://docs. oracle.com/javase/8/ docs/ api/java/ util/ locale. html" rel= "nofollown noreferrrr"\\ code > dateTimeFormatter code_ / a > 和 < a href=" https://docs. oracle. com/javase/8/ java/time/ format/ DateTime Formatter. html" rel=" noforerrr"\code > DateTime Formatter 。
您想要的格式对日期部分使用中长样式, 但对时间段则使用短时样式。 幸运的是, < code> DateTimeFormatter code > 允许您将每个部分分别定位, 从这里可以看到, 我们通过一对 < href= > https://docs. oracle.com/javase/8/docs/ api/java/time/ format/ FormatStyle. html" rel=" nofolverrer"\\code > FormatStyle 对象的地方。
Locale l = Locale.US; // Or Locale.CANADA_FRENCH, or Locale.ITALY, etc.
DateTimeFormatter fOutput = DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.MEDIUM , FormatStyle.SHORT ).withLocale ( l );
String output = zdt.format ( fOutput );
倾弃到控制台
System.out.println ( "zdt: " + zdt + " | output: " + output );
zdt: 2012-05-22-22T14:52Z[GMT] | output: May 22, 2012 2:52 PM
About java.time
http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html" rel=“不跟随无悔者”>java.time 框架建在Java 8 及以后。这些班级取代旧的麻烦时代班,如 java.util.Date
, .Calendar
, & amp; java.text.SuproDateFormat
。
"http://www.joda.org/joda-time/" rel="no follown noreferrer" >Joda-Time 项目,现载于https://en.wikipedia.org/wiki/Maintenance_mode" rel="nofollown noreferrer" > 维护模式 ,建议移民到java.time。
更多信息,请见Oracle Toutor 。并搜索Stack overflow, 查找许多实例和解释。
大部分java.time功能都重新移植到 Java 6 & amp; 7 的“href=”http://www. 33enten.org/ threetenbp/” rel=“notfolle noreferr” >TreeTen-Backport ,并进一步改编为“a href=”https://en.wikipedia.org/wiki/Android_(操作_System)” rel=“nofollow noreferr”>>Aroid in(见 如何使用 < )。
< a href=>""http://www. threeten.org/ threeten-extra/" rel="nofollow noreferrer" > ThreeTen-Extra project 扩展 java.time 并增加 java.time 。 此项目是未来可能添加 java.time 的证明依据。 您可以在此找到一些有用的分类, 如 < code > Interval 、 < code > yearWeek 、 < code > yearQuarter 等, < code > yearQuarter 。