2016-02-18 289 views
1

如何使用String.format將日期對象的月份提取爲數字而不使用前導零?在Java中使用String.format從月份中刪除前導零

下面是示例代碼:

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

如果月份是2月,這個表達式會產生字符串「02」,但我需要出示「2」。我需要使用String.format。我不能使用其他類的方法,如DateFormatSimpleDateFormat

+0

它解析爲整數格式:) – alway5dotcom

+0

爲了澄清,我想要一個String對象。通過「提取一個日期對象的月份作爲一個數字」我只是說我不想要像「Feb」或「February」這樣的東西。另外,我不能調用任何後續方法。我只能操縱格式字符串。 – mushroom

回答

0

你可以只對字符串做一些邏輯,比如檢查第一個字符是否爲「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)); 
-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+(?!$)", "")); 
+0

這個問題明確說SimpleDateFormat不能使用,所以這不是一個好的答案 –

+0

哦,我的不好。我習慣了我習慣的...然後我會使用正則表達式;) – Farbod

+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())); 
    } 

} 
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", "") 
0

你可以試試這個方法:

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