【发布时间】:2011-03-02 19:41:21
【问题描述】:
有谁知道在 Joda Time 或 Java 本身中是否有一个方法将 int 或 String 作为参数,例如4 或“4”,并以简短格式返回月份名称,即一月的 JAN?
我想长月份名称可以被截断并转换为大写。
【问题讨论】:
有谁知道在 Joda Time 或 Java 本身中是否有一个方法将 int 或 String 作为参数,例如4 或“4”,并以简短格式返回月份名称,即一月的 JAN?
我想长月份名称可以被截断并转换为大写。
【问题讨论】:
针对 Jon 的回答,您可以通过使用 Joda 对日期时间类的直接访问来进一步简化这一点。
String month = date.toString("MMM");
【讨论】:
String month = date.toString("MMM", Locale.US) 用于特定的语言环境。
我相信“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);
}
}
【讨论】:
我们可以这样做:
DateTime dt = new DateTime(); // current time
String monthStr = dt.month().getAsShortText(); // gets the month name
您也可以使用getAsText() 方法作为长月份名称。
【讨论】:
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);
【讨论】:
我关于使用 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());
}
}
【讨论】:
java.time 更新的反对票