当前位置: 首页 > 面试题库 >

字符串中的Java Date对象无法正常工作

尹正奇
2023-03-14
问题内容

我遇到了一个似乎无法解决的顽固问题。我在stackoverflow上寻找解决方案,并且发现了很多有关Java日期格式的文章,但没有关于我所遇到问题的详细信息。

基本上,我需要将日期字符串转换为java.util.Date对象。我正在使用Date和SimpleDateFormat类。对于我遇到的大多数约会,它都可以正常工作。但是对于某些日期,它可以工作,但是会更改实际日期。日期的两个示例是:

2012年2月24日星期五太平洋标准时间(PST 2012)->更改为-> 2012年1月6日星期五太平洋标准时间16:45:40

2012年6月13日星期三10:00:42 PDT->更改为-> 2012年1月4日星期三09:00:42 PST 2012

知道为什么日期更改了吗?有什么方法可以轻松避免这种情况,或者以其他方式做到这一点?我的代码复制如下。您可以尝试看看我在说什么。

提前致谢!

您可以使用以下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是非常特殊的事情,日历年。

请参阅SimpleDateFormat文档以获取更多信息。



 类似资料:
  • 问题内容: 我的代码: 引用的日志文件是: 然后,需要检查脚本中的下一个条件是: 如果条件不起作用 问题答案: 必要的修复: 此后已在问题中解决。 可能必要的修复: 如注释中所述,在脚本中使用尾随空格表示将尾随空格存储在其中,这将破坏与的比较。

  • 我有一个 和 MapString只是包含大量的数字(除了数字没有其他字符)。 现在我想用mapString的第一个字符分配数组中的第一个值(map[0,0]),用mapString的第二个字符分配第二个值(map[0,1]),依此类推。我使用以下代码: 现在发生的几乎是我所希望的。问题是它给每个值分配两个数字,而不是一个。我也不知道他在使用什么数字,因为它们不是我的地图保存设置中的数字,但我可以自

  • 问题内容: 这是我的带有SQL查询的PHP代码,但是输出与预期不符: 而且我得到这样的SQL查询: VALUES之后的第一个在哪里? 问题答案: 并具有相同的运算符优先级,但保持关联。第一次串联后的意思是: 该字符串已添加到您的密钥中,例如 因此,该字符串在该数字上下文中转换为整数并 消失 。要解决此问题,请在您的加法前后加上括号。

  • 问题内容: 尊敬的Java专家! 您能否解释一下,为什么在串联2个三进制运算符的结果时String串联不能在Java中正常工作? 例: 输出为“ D”,但我希望为“ BC”。 由于运营商的优先考虑,我怀疑它的工作原理是这样,但是我不确定在上述情况下我们究竟如何得到“ D”。在这种情况下会发生什么计算算法? 问题答案: 它被解释为以下代码: 不为null,因此将被评估为 借助OSborn的答案,您可

  • 问题内容: 我要求Google帮我,我没有运气。:-(以下是产生错误的特定代码: 整个功能如下: 如果我错过了一些愚蠢的事情,请原谅我。谁能告诉我是什么引起了这个问题??? 问题答案: 问题在于$ uname是一个对象,而不是字符串。您需要调用$ uname的方法之一来访问数据。 应该这样做(或上述解决方案之一)。

  • 问题内容: 我在一个名为Film_Release的字段中有一个表,该表的字符串值格式为 2012 年 4月20日 ( 星期五) 我正在遍历,我想在日期时间将它们转换并将其推出到另一个表中。我的第二张表有一个名为Films_Date的列,其格式为DATE。我收到此错误 DateTime类的对象无法转换为字符串 然后,我通过插入命令将$ newdate插入表中。 为什么会出现这样的错误? 问题答案: