如何将日期字符串格式化为期望的日期格式
我试图将字符串格式化为日期。如何将日期字符串格式化为期望的日期格式
为此,我已经写了代码: -
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
System.out.println(sdf.format(cal.getTime()));
这是很好.. 但现在我想将字符串转换成格式化像上面的日期.. 例如
String dt="2010-10-22";
和输出应该是这样的: - 2010-10-22T00:00:00
我该怎么办呢?
String dt = "2010-10-22";
SimpleDateFormat sdfIn = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition ps = new ParsePosition(0)
Date date = sdfIn.parse(dt, pos)
SimpleDateFormat sdfOut = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
System.out.println(sdfOut.format(date));
感谢它的工作... – 2010-11-01 08:50:06
你不需要'新的ParsePosition(0)'。只需调用'sdfIn。解析(dt)',它默认为第一个位置。 – 2010-11-01 14:49:59
这应该为你做,记得把它包在一个try-catch块以防万一。
DateFormat dt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try
{
Date today = dt.parse("2010-10-22T00:00:00");
System.out.println("Your Date = " + dt.format(today));
} catch (ParseException e)
{
//This parse operation may not be successful, in which case you should handle the ParseException that gets thrown.
//Black Magic Goes Here
}
“以防万一”是什么?我不喜欢通过打印堆栈跟踪来“处理”异常的代码示例,因为它们似乎可以正常工作,但完全消除了解决方案中非常重要的一部分。最好不要编写catch块,至少编译器会强制用户**想**关于如何处理异常。为此,我宁愿你的回答提到可以抛出ParseException,并且应该适当地处理*。 – 2010-11-01 08:47:25
感谢您的回答,但我认为大卫的回答更好 – 2010-11-01 08:50:53
我很高兴您找到您的答案!在代码片段中打印堆栈跟踪时,我没有发现任何固有的危险。上帝怜悯任何直接从互联网复制代码并逐字部署的开发人员。跟踪是在那里,以便开发人员停下来思考,但也有一个开始找出问题的出发点。如果您需要编译器来强制开发人员查看他的代码,那么出现严重错误。当然只是我的意见! – JonVD 2010-11-01 08:56:22
您使用日期的格式化输出相同的类也可以用来分析输入的日期。
要使用例如,解析样品日期(即小时,分钟等)
String dt = "2010-10-22";
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(dateFormatter.parse(dt));
未指定的字段将是0。因此,您可以使用相同的代码格式化输出日期。
如果你的输入将是ISO,你也可以看看使用的Joda Time API,像这样:
LocalDateTime localDateTime = new LocalDateTime("2010-10-22");
System.out.println("Formatted time: " + localDateTime.toString());
谢谢它真的会采用ISO格式 – 2010-11-01 09:06:16
你有没有尝试在看看其他答案在stackoverflow?例如http://stackoverflow.com/questions/3487898/how-to-parse-follow-date-in-java – 2010-11-01 08:40:33