我遇到了一个似乎无法解决的顽固问题。我在 stackoverflow 上寻找解决方案,并找到了很多关于 Java 日期格式化的帖子,但没有具体针对我遇到的问题。
基本上,我需要将日期字符串转换为 java.util.Date 对象。我正在使用 Date 和 SimpleDateFormat 类。对于我遇到的大多数约会来说,它都工作得很好。但对于某些日期,它可以工作,但会改变实际日期。两个示例日期是:
2012 年 2 月 24 日星期五 16:45:40 PST 2012 --> 更改为 --> 2012 年 1 月 6 日星期五 16:45:40 PST 2012
2012 年 6 月 13 日星期三 10:00:42 PDT 2012 --> 更改为 --> 2012 年 1 月 4 日星期三 09:00:42 PST
知道为什么日期会改变吗?有什么方法可以轻松避免这种情况或以不同的方式做到这一点?我的代码复制如下。你可以尝试看看我在说什么。
提前致谢!
您可以使用以下 JSP 代码尝试此操作:
<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.text.*" %>
<%
String dateStr = "";
Date tmpDate = null;
DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z YYYY");
System.out.println("First Test ---------------");
dateStr = "Fri Feb 24 16:45:40 PST 2012";
tmpDate = (Date) formatter.parse(dateStr);
System.out.println("Original:"+dateStr+":");
System.out.println("Date Obj:"+tmpDate.toString()+":");
System.out.println("Second Test --------------");
dateStr = "Wed Jun 13 10:00:42 PDT 2012";
tmpDate = (Date) formatter.parse(dateStr);
System.out.println("Original:"+dateStr+":");
System.out.println("Date Obj:"+tmpDate.toString()+":");
%>
我得到以下输出:
First Test ------------
Original:Fri Feb 24 16:45:40 PST 2012:
Date Obj:Fri Jan 06 16:45:40 PST 2012:
Second Test -----------
Original:Wed Jun 13 10:00:42 PDT 2012:
Date Obj:Wed Jan 04 09:00:42 PST 2012:
在格式字符串中使用 yyyy 而不是 YYYY。
YYYY是一个很特别的东西,日历周年。
See the SimpleDateFormat文档以获取更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)