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否。$
锚定是“输入结束”-它只在输入结束时匹配