Как получить короткие названия месяцев в Joda Time?

Сравнение времени двух методов из 2.7 показывает, что они практически идентичны:

>>> setup_string = "a = sorted(dict({2:3, 1:89, 4:5, 3:0}).items())"
>>> timeit.timeit(stmt="[(k, val) for k, val in a]", setup=setup_string, number=10000)
0.003599141953657181

>>> setup_string = "from collections import OrderedDict\n"
>>> setup_string += "a = OrderedDict({1:89, 2:3, 3:0, 4:5})\n"
>>> setup_string += "b = a.items()"
>>> timeit.timeit(stmt="[(k, val) for k, val in b]", setup=setup_string, number=10000)
0.003581275490432745 
20
задан Harshal Patil 29 March 2016 в 11:41
поделиться

3 ответа

В ответ на ответ Джона вы можете еще больше упростить это, используя прямой доступ Joda для классов datetime.

String month = date.toString("MMM");
64
ответ дан 29 November 2019 в 22:31
поделиться

Я считаю, что «MMM» даст название месяца в Joda ... но сначала вам нужно создать соответствующий форматер. Вот пример кода, который печатает «Апр» на моем ящике. (Вы, конечно, можете указать соответствующий языковой стандарт.)

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);
    }
}
18
ответ дан 29 November 2019 в 22:31
поделиться

Мой последний ответ об использовании 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());
    }
}
-3
ответ дан 29 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: