Java SimpleDataFormat剪切跟踪SSS的0位

Java SimpleDataFormat剪切跟踪SSS的0位,java,simpledateformat,trailing,Java,Simpledateformat,Trailing,嗨,我有一个简单的日期格式 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 它将日期格式化为这样 2014-04-23 13:15:59.390 是否可以删除尾随的0,除非数字不是0 2014-04-23 13:15:59.39 好的,我发现我的问题了 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 给了我想要的,问题是我正在将它与来自数据库的日期字符串进行比较 数据库从一个times

嗨,我有一个简单的日期格式

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
它将日期格式化为这样

2014-04-23 13:15:59.390 
是否可以删除尾随的0,除非数字不是0

2014-04-23 13:15:59.39
好的,我发现我的问题了

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
给了我想要的,问题是我正在将它与来自数据库的日期字符串进行比较

数据库从一个timesamp列中读取它,该列包含正确的值,但我使用

resultSet.getString(i)

由于某种原因,它剪掉了最后一个数字。。。所以我的问题应该是,为什么resultSet.getString在读取日期字段时会剪切最后一个字符?

这可能是您遇到的特定于语言环境的问题。试试这个:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);

使用字符串方法修剪尾随零:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date).replaceAll("0$", "");
要修剪最多2个尾随零:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(date).replaceAll("0?0$", "");

在生成的字符串上,执行一个
replaceFirst(“[0]*$”,”)

例如:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()).replaceFirst("[0]*$", "")

你是对的,我已经重写了我的问题。你试过一个S吗?是的,但它完全切掉了数字。如果它以
00
结尾,那么应该删掉多少个零?那么
000
?根据java参考资料“分数秒是专门处理的:它们在右边是零填充的。”,您可能必须转换为字符串并手动删除它。他是要修剪还是保留它们?这不会也修剪日期中的零吗?@Bohemain我想您应该知道哪个类中的replaceAll方法exist@MattK否。
$
锚定是“输入结束”-它只在输入结束时匹配