Vaadin 瓦丁:如何更改日期格式?
我从数据库中提取一个日期,将其重新指定为文本字段,然后将其转换为字符串(),但该日期显示为“2015年10月12日星期四0900”,此时我只需要MM/DD/YYYY格式。如何更改格式Vaadin 瓦丁:如何更改日期格式?,vaadin,Vaadin,我从数据库中提取一个日期,将其重新指定为文本字段,然后将其转换为字符串(),但该日期显示为“2015年10月12日星期四0900”,此时我只需要MM/DD/YYYY格式。如何更改格式 Date myDatabaseDate = someDBGetMethod(); TextField myDateTF = new TextField() myDateTF.setCaption("My date is: "); myDateTF.setValue(myDatabase
Date myDatabaseDate = someDBGetMethod();
TextField myDateTF = new TextField()
myDateTF.setCaption("My date is: ");
myDateTF.setValue(myDatabaseDate).toString());
myDateTF.setReadOnly(true);
FormLayout fLayout = new FormLayout();
addComponent(fLayout);
fLayout.addComponent(myDateTF);
- 发生的事情:周四10月22日12:19:04 CDT 2015
- 我想要的:2015年10月22日
00:00:00.000
。早期Java中的这些旧日期时间类非常混乱
从数据库中,您应该会收到后者,java.sql.Date,这是一个仅限日期的存储值。如果您存储的是日期时间值,那么您应该从JDBC驱动程序获取对象
java.timeLocalDate
由于java.sql.Date
是与早期java捆绑在一起的旧的笨重的日期时间类之一,我们应该转换为在Java8和更高版本中内置的框架中发现的新类。看
对于仅日期值,java.time提供了类。名称中的“本地”指的是任何地方,而不是特定的地方。它代表了日期的模糊概念,但与时间线无关。例如,巴黎的约会开始时间比蒙特勒尔早。如果您关心时间轴上的确切时刻,那么应该使用java.sql.Timestamp而不是java.sql.Date
从java.sql.Date到java.time.LocalDate的转换是一个简单的一行程序,这是为您提供的
LocalDate localDate = myJavaSqlDate.toLocalDate();
在将数据存储到数据库中时,使用另一种方法同样简单
java.sql.Date myJavaSqlDate = java.sql.Date.valueOf( localDate );
有了LocalDate
,您可以调用包来格式化本地化的字符串,以便于用户阅读。指定用户期望的值
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( Locale.CANADA_FRENCH );
String output = localDate.format( formatter );
示例输出:
2015年11月1日迪曼奇
ZoneDateTime
让我们考虑一下,如果你得到了一个而不是<代码> java .sql。日期< /c> > /p> 我们可以将
java.sql.Timestamp
转换为即时
,UTC时间轴上的一个时刻
Instant instant = myTimestamp.toInstant();
接下来,指定一个时区
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId);
我们使用java.time.format
包来创建字符串表示。注意链式调用,第二个设置了特定的区域设置。如果未指定,则隐式应用JVM的当前默认区域设置。最好是直言不讳
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.FULL ).withLocale ( Locale.CANADA_FRENCH );
String output = zdt.format ( formatter );
示例输出:
迪曼奇2015年11月1日东部时间2小时24分
你检查过房间了吗?它们是专门为日期操作而设计的。除了为此使用DateField之外,如果您只想显示它,那么它就像java中的任何地方一样,您需要一个DateFormat类。例如
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime ( FormatStyle.FULL ).withLocale ( Locale.CANADA_FRENCH );
String output = zdt.format ( formatter );