Java日期转换字符串回日期
在我的JSF托管bean中,我已将startDate声明为java.utilDate类型,并且我还有getter和setter。来自数据库的startDate是日期类型 当我收到值时,格式为默认类型,我格式化日期Java日期转换字符串回日期,java,jsf,Java,Jsf,在我的JSF托管bean中,我已将startDate声明为java.utilDate类型,并且我还有getter和setter。来自数据库的startDate是日期类型 当我收到值时,格式为默认类型,我格式化日期 SimpleDateFormat df = new SimpleDateFormat(" dd MMM yyyy"); Date oneDate = new Date(startDate); df.format(oneDate); 我面临的问题是df.format(oneDate)返
SimpleDateFormat df = new SimpleDateFormat(" dd MMM yyyy");
Date oneDate = new Date(startDate);
df.format(oneDate);
我面临的问题是df.format(oneDate)代码>返回字符串。
是否可以将df.format(oneDate)
转换回最新格式,这样我就不必
更改我的起始日期数据类型
非常感谢您的帮助
感谢您使用您创建的相同的SimpleDateFormat对象
df.parse(yourDateString);
根据对该问题的评论:
@我同意你说的,最好在UI中格式化。因此,我在我的jsf页面中添加了以下内容
managedBean中的convertTime
方法是
public String convertTime(Date time){
Date date = new Date();
Format format = new SimpleDateFormat("yyyy MM dd");
return format.format(date);
}
显示正确,但是如果我想使用
则会出现错误
严重:java.lang.IllegalArgumentException:无法将给定对象格式化为日期
你在错误的方向上寻找解决方案。以人为目标的格式化必须在视图(UI)端完成,而不是在模型端,更不用说控制器端了
要在JSF组件中以人性化模式显示Date
对象,您应该使用标准JSF组件集提供的标记:
这样,您就可以一直保留属性Date
。这样,您还可以保存编辑后的值(这在您初次尝试时是不可能的!)
对于PrimeFaces的组件,它有一个模式
属性,正好用于此目的:
下载并咨询以了解所有可用属性。我希望我的代码能帮助您
public String dateToString(Date date, SimpleDateFormat formatter) {
return formatter.format(date);
}
public Date stringToDate(String date, SimpleDateFormat formatter) {
try {
return formatter.parse(date);
} catch (ParseException e) {
//Catching exception
}
return null;
}
这对我很有用:
<p:calendar value="#{calTestBean.dateStr}" pattern="MM/dd/yyyy">
<f:convertDateTime pattern="MM/dd/yyyy"/>
</p:calendar>
参考资料:只需使用parse()
方法即可。然而,我看不出这有什么用处。您可能会得到与开始时相同的Date
对象。如果您打算在某些UI中格式化它以用于人类表示,只需在您将要向人类展示它的时刻对其进行格式化。希望这对您有所帮助:,java.text.ParsePosition)为什么不扩展日期并使用您自己的toString方法呢?@JamesBlack我认为这是一个糟糕的建议@我同意你说的,最好在UI中格式化。因此,我在我的jsf页面中添加了以下内容<代码>非常感谢BalusC,这很有帮助。谢谢你的回答。但是当我在中显示日期时,我发现了一个小问题。不,它与时区有关。您的系统默认时区明显超出GMT。Date
默认为GMT。
默认为系统默认时区。使用timeZone
属性明确指定时区,例如timeZone=“GMT”
。另请参阅我在回答中链接的PrimeFaces用户指南文档。再次感谢。正如你提到的,我添加了javax.faces.DATETIMECONVERTER\u DEFAULT\u TIMEZONE\u IS\u SYSTEM\u TIMEZONE true
web.xml,解决了日期问题。谢谢。我还有一个关于数据模式的问题。在我的jsf页面