使用Java中的String.format从月中删除前导零

时间:2016-02-18 02:51:38

标签: java

如何使用 'default' => env('DB_CONNECTION', 'sqlsrv'), 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'WIN-THR4E35I6N6\SQLEXPRESS'), 'database' => env('DB_DATABASE', 'test123'), 'username' => env('DB_USERNAME', 'test123'), 'password' => env('DB_PASSWORD', 'test321'), 'charset' => 'utf8', 'prefix' => '', ], 将日期对象的月份提取为不带前导零的数字?

以下是示例代码:

String.format

如果月份是2月,则此表达式将生成字符串" 02",但我需要生成" 2"。

我必须使用String.format("%tm", new java.util.Date()) 。我无法使用其他类中的方法,例如String.formatDateFormat

5 个答案:

答案 0 :(得分:1)

是简单日期格式更好

package Test;

import java.text.SimpleDateFormat;

public class DateFromat {


    public static void main(String args[])
    {

        System.out.println(new SimpleDateFormat("M").format(new java.util.Date()));
    }

}

答案 1 :(得分:0)

你可以在字符串上做一些逻辑,比如检查第一个char是否为“0”,然后对其余字符串进行子串,或者你可以让它变得非常简单,只需使用Integer类并将字符串解析为类似于以下。

String format = String.format("%tm", new java.util.Date());
int parseInt = Integer.parseInt(format);
System.out.println(parseInt);
format = parseInt + "";
System.out.println(format);

或者如果你更喜欢一个班轮

format = String.valueOf(Integer.parseInt(String.format("%tm", new java.util.Date())));
System.out.println(String.valueOf(format));

答案 2 :(得分:0)

更简洁的方法是使用正则表达式获取2而不将其转换为可能是额外步骤的数字。

Java Doc

中提取

Month, formatted as two digits with leading zeros as necessary, i.e. 01 - 13.

因此遵循以下方法是安全的

String.format("%tm", new java.util.Date()).replaceAll("^0", "")

答案 3 :(得分:0)

您可以尝试这种方式:

 System.out.println(Integer.valueOf(String.format("%tm", new java.util.Date())));

答案 4 :(得分:-1)

格式化日期的最佳方法是使用java.text.SimpleDateFormat类。您可以更简单地格式化日期,并且在我看来不需要额外解析或使用正则表达式:

System.out.println(new SimpleDateFormat("M").format(new java.util.Date()));

将打印" 2"如果当前月份是"二月"。

编辑:

由于SimpleDateFormat或其他方法不是一种选择,我建议使用正则表达式:

System.out.println(String.format("%tm", new java.util.Date()).replaceFirst("^0+(?!$)", ""));