如何在Joda Time获得短月名?

时间:2010-06-11 19:18:48

标签: java time jodatime

有没有人知道Joda Time或Java本身是否有一个方法,它采用int或String作为参数,例如: 4或“4”并以短格式给出月份的名称,即1月的JAN?

我认为可以截断长月份名称并将其转换为大写。

5 个答案:

答案 0 :(得分:63)

回应Jon的回答,您可以使用Joda直接访问日期时间类来进一步简化。

String month = date.toString("MMM");

答案 1 :(得分:18)

我相信“MMM”会在Joda中给出月份名称......但是你需要先建立一个合适的格式化程序。这是一些示例代码,在我的盒子上打印“Apr”。 (您当然可以指定相关的区域设置。)

import org.joda.time.*;
import org.joda.time.format.*;

public class Test
{
    public static void main(String[] args)
    {
        // Year and day will be ignored
        LocalDate date = new LocalDate(2010, 4, 1);
        DateTimeFormatter formatter = DateTimeFormat.forPattern("MMM");
        String month = formatter.print(date);
        System.out.println(month);
    }
}

答案 2 :(得分:4)

我们可以这样做:

DateTime dt = new DateTime();  // current time
String monthStr = dt.month().getAsShortText();  // gets the month name

此外,您可以将getAsText()方法用于长月名称。

Reference

答案 3 :(得分:0)

LocalDateTime fecha_sistema = LocalDateTime.now();

// return month value betwen 1 to 12
int month = fecha_sistema.getMonthValue();

// return month name
String mes = fecha_sistema.getMonth().name();

System.out.println("Month" + mes + "/ " + month);

答案 4 :(得分:-3)

关于使用java.util.Calendar进行此操作的最后一个答案比它需要的要复杂得多。这是一个更简单的版本,虽然它仍然需要Java 6或更新版本。

import java.util.Calendar;
import java.util.Locale;

public class Test
{
    public static void main(String[] args)
    {
        // Sample usage.
        // Should be "Apr" in English languages
        String month = getMonthNameShort(4);
        System.out.println(month);
    }
    /**
     * @param month Month number
     * @return The short month name
     */
    public static String getMonthNameShort(int month)
    {
        Calendar cal = Calendar.getInstance();
        // Calendar numbers months from 0
        cal.set(Calendar.MONTH, month - 1);
        return cal.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());
    }
}