【问题标题】:Left padding an integer with zero (Java) [duplicate]用零填充整数(Java)[重复]
【发布时间】:2014-10-05 17:04:03
【问题描述】:

我已经检查过了,显然您不能将零填充到整数上。转换为字符串并返回整数也不起作用。虽然,我想要做的是将整数用于 FOR 循环,然后使用连接发送到 JPQL 查询,这需要日期格式为 XML 公历(YYYY-MM-DD HH:MM:SS) .

解决我的问题的一种方法是在将格式化程序发送到 JPQL 查询之前使用它。我的意思是:在我的情况下,有没有更好的方法来做到这一点?

以下是相关代码:

for (int month = startMonth; month <= endMonth; month++) {

                    inputDates = "SELECT COUNT(d) FROM Datafile d WHERE d.datafileCreateTime BETWEEN {ts  2013-" +month+ "-01 00:00:00}  AND {ts 2013-" +month+ "-02 23:59:59}";
                    ...

【问题讨论】:

  • 你有没有费心去读一些关于String.format()的东西??
  • 我会研究format 类,它可以让您指定数字在小数点前后的字符数。这应该可以让你实现你想要的。
  • docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html 你在找什么?您可以将 int 转换为带有前导零的两位数。
  • 很难说这是什么重复,因为问题开始是关于用零填充整数但变成格式化日期。
  • 有没有办法在 SQL 查询中使用 GROUP BY,而不是运行多个查询来按月获取结果?

标签: java date


【解决方案1】:

这个怎么样:

String.format("%010d", 123456);

详情:Formatter

org.apache.commons.lang.StringUtils.leftPad("123456", 10, "0");

详情:StringUtils

【讨论】:

    【解决方案2】:

    如果我理解您的问题,您需要特定格式的Date,我建议您使用SimpleDateFormat。也就是说,像 -

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date = sdf.format(new Date());
    System.out.println(date);
    

    输出是

    2014-08-12 11:06:19
    

    【讨论】:

      猜你喜欢
      • 2019-03-15
      • 2016-07-24
      • 1970-01-01
      • 2011-03-28
      • 2011-05-27
      • 2015-11-18
      • 2015-09-24
      • 1970-01-01
      • 2015-05-10
      相关资源
      最近更新 更多