Java 如何在CSV导出期间保留日期格式

Java 如何在CSV导出期间保留日期格式,java,gwt,date,csv,export,Java,Gwt,Date,Csv,Export,导出为CSV时是否有保留日期格式的方法?我有一个GWT应用程序。例如,我的日期数据是2012年1月3日和2012年2月2日。成功将其导出到CSV后,当我打开CSV文件时,这些日期现在看起来分别为2012年1月3日和2012年1月2日。有没有办法控制它们在CSV中的外观?在导出代码之前,我对代码进行了调试和跟踪,并且日期是正确的。非常感谢您的帮助。您应该查看java.text.simpleDataFormat无论何时处理日期,如果您想在工作时面带微笑,请使用 据我所知,使用CSV时无法控制日期在E

导出为CSV时是否有保留日期格式的方法?我有一个GWT应用程序。例如,我的日期数据是2012年1月3日和2012年2月2日。成功将其导出到CSV后,当我打开CSV文件时,这些日期现在看起来分别为2012年1月3日和2012年1月2日。有没有办法控制它们在CSV中的外观?在导出代码之前,我对代码进行了调试和跟踪,并且日期是正确的。非常感谢您的帮助。

您应该查看java.text.simpleDataFormat

无论何时处理日期,如果您想在工作时面带微笑,请使用


据我所知,使用CSV时无法控制日期在Excel中的显示方式(只能由Excel用户的设置控制)。我们有一个类似的问题(电话号码),唯一可靠的解决办法是使用Excel格式。我们使用写入.xls文件[*],在其中可以将单元格类型设置为文本

至少对于电话号码来说,这是必要的——否则Excel会丢弃前导0,并将其视为数字(这使得无法区分国内和国际电话号码)。然而,对于日期,如果让用户决定日期的显示方式更好的话,也许值得考虑一下

[*]我们还提供下载.csv文件,并警告使用Excel打开时这些文件并不理想。

您不能(据我所知)在csv文件中传递元信息。因此,要查看发送日期的方式,可以通过以下方式之一传递日期(数据值位于逗号之间):

,03-01-2012,
,=“03-01-2012”,

只需在日期值之前使用空格

i、 例如,下面的示例查询

select ' '||to_char(mydatecolumn,'YYYY-MM-DD HH:MI:SS AM') DATEVALUE from mytable;

尝试将数据导出到CSV,它将以与文本导出相同的格式保存它,Excel将其视为文本,因此不会将其更改为默认的Excel日期格式。

<代码>新SimpleDateFormat(“DD MMYYYY”)。格式(日期)<代码>应该使用您的COM.GoGoLe.GWT.I18N.clit.DATETEMFLASH类。例如,DateTimeFormat.getFormat(“MM dd yyyy”)将返回一个字符串,该字符串将日期格式化为“03-01-2012”,并将其显示在应用程序的屏幕上。然后我们将该字符串和其他数据一起放入字符串缓冲区。此时,我仍然可以看到日期字符串仍然显示正确的格式。但是,当我打开CSV文件时,日期会按照excel希望的格式进行格式化。我不确定是否有办法从java中告诉Excel我希望对这些日期单元格使用某种格式。1)您使用什么程序打开CSV文件(纯文本编辑器,或者类似Excel/OpenOffice Calc的东西)?2.)您使用什么库来编写CSV?1.)我使用Excel作为默认值,大多数客户端在默认情况下都会使用Excel来打开导出的文件。2.)我不使用任何特殊的库来写入CSV。我只是使用com.google.gwt.i18n.client.DateTimeFormat来设置日期的格式,因为日期在应用程序中正确显示,但在Excel中却不正确。不确定是否有方法从Java控制Excel的单元格格式。因为我注意到Excel中的公式栏显示的是我想要的日期格式,而不是保存日期的单元格。谢谢。我想我正在使用类似的东西,而且效果很好。我认为问题在于Excel何时打开。Excel中的公式栏将显示DateTimeFormat类生成的正确格式,但保存该日期的单元格将以不同的格式显示。因此,我不确定是否有办法让Java应用程序中的Excel以某种方式格式化日期。注意:在您的情况下,似乎可以控制日期单元格的显示样式(而不是使用文本单元格)。看(但我还没有测试过,所以这只是一个评论)是的,我之前和另一个程序员讨论过这一点,我们有点决定,在这一点上,这就是它的方式。我看了一下您建议的ApachePOI,似乎只是为了完成一件小事需要做更多的工作。我只是想确定是否有更简单的方法。无论如何,非常感谢你的帮助!不知道为什么没有人对这个回答投更多的赞成票。我有一个要求,我必须只发送csv,而xls是不允许的。所以Apache POI是不可能的。但是这个解决方案非常有效。非常感谢。
select ' '||to_char(mydatecolumn,'YYYY-MM-DD HH:MI:SS AM') DATEVALUE from mytable;