powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / конвертация формата даты
11 сообщений из 36, страница 2 из 2
конвертация формата даты
    #39920729
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

 у меня есть несколько форматов, на входе dd/MM/yyyy, dd-MM-yyyy, dd-MMM-yyyy и на выходе получить yyyy-MM-dd
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920801
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
вадя,

 у меня есть несколько форматов, на входе dd/MM/yyyy, dd-MM-yyyy, dd-MMM-yyyy и на выходе получить yyyy-MM-dd

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    enum Mon {
        xx, jan, feb, mar, apr, may, june, july, aug, sept, oct, nov, dec
    }

    public static void main(String[] args) {

        final String regex = "((\\d{1,2}).(?<xx>[a-zA-Z]{3}|\\d{1,2}).(\\d{4}))";
        final String string = "12-May-2016";

        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);

        matcher.find();
        StringBuilder sbuf = new StringBuilder();
        Formatter fmt = new Formatter(sbuf);
        int num;
        if (matcher.group("xx").length() <= 2) {
            num = Integer.parseInt(matcher.group("xx"));
        } else {
            num = Mon.valueOf(matcher.group("xx").toLowerCase()).ordinal();
        }
        fmt.format("%4d-%02d-%02d", Integer.parseInt(matcher.group(4)), num, Integer.parseInt(matcher.group(2)));
        System.out.println(sbuf.toString());

    }
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920805
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

благодарю за помощь!
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920938
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

для формата yyyy-mm-ddThh24:mi:ss+Timezone необходимо все переделывать?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920940
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlad2018
вадя,

для формата yyyy-mm-ddThh24:mi:ss+Timezone необходимо все переделывать?


я имею ввиду добавить в существующий
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920943
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя
vlad2018
вадя,

 у меня есть несколько форматов, на входе dd/MM/yyyy, dd-MM-yyyy, dd-MMM-yyyy и на выходе получить yyyy-MM-dd

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    enum Mon {
        xx, jan, feb, mar, apr, may, june, july, aug, sept, oct, nov, dec
    }

    public static void main(String[] args) {

        final String regex = "((\\d{1,2}).(?<xx>[a-zA-Z]{3}|\\d{1,2}).(\\d{4}))";
        final String string = "12-May-2016";

        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);

        matcher.find();
        StringBuilder sbuf = new StringBuilder();
        Formatter fmt = new Formatter(sbuf);
        int num;
        if (matcher.group("xx").length() <= 2) {
            num = Integer.parseInt(matcher.group("xx"));
        } else {
            num = Mon.valueOf(matcher.group("xx").toLowerCase()).ordinal();
        }
        fmt.format("%4d-%02d-%02d", Integer.parseInt(matcher.group(4)), num, Integer.parseInt(matcher.group(2)));
        System.out.println(sbuf.toString());

    }



можно ли сюда добавить формат yyyy-mm-ddThh24:mi:ss+Timezone ?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920944
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

можно ли сюда добавить формат yyyy-mm-ddThh24:mi:ss+Timezone ?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920969
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlad2018,

Откуда эти даты вообще приходят? - когда приходят даты в случайных форматах, то это чем-то плохим попахивает.
Точно ли с датой надо всегда работать как со строкой? - это тоже отдает чем-то нехорошим
...
Рейтинг: 0 / 0
конвертация формата даты
    #39921060
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
вадя,

 у меня есть несколько форматов, на входе dd/MM/yyyy, dd-MM-yyyy, dd-MMM-yyyy и на выходе получить yyyy-MM-dd


org.apache.commons.lang3.time.DateUtils.parseDate()

В качестве входных параметров передаёшь строку с датой и массив строк с возможными форматами, на выходе, если повезёт, получаешь java.util.Date. Обратно в нужную строку можно преобразовать с помощью java.text.SimpleDateFormat
...
Рейтинг: 0 / 0
конвертация формата даты
    #39921097
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick
vlad2018
вадя,

 у меня есть несколько форматов, на входе dd/MM/yyyy, dd-MM-yyyy, dd-MMM-yyyy и на выходе получить yyyy-MM-dd


org.apache.commons.lang3.time.DateUtils.parseDate()

В качестве входных параметров передаёшь строку с датой и массив строк с возможными форматами, на выходе, если повезёт, получаешь java.util.Date. Обратно в нужную строку можно преобразовать с помощью java.text.SimpleDateFormat

Это прекрасно.

Только прогоните регрессию бенчмарка. А то потом окажется что в системе узкое место - это парсинг дат и все
мегафлопы процессора сгорают в одном месте.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 private static Date parseDateWithLeniency(
365            final String str, final Locale locale, final String[] parsePatterns, final boolean lenient) throws ParseException {
366        if (str == null || parsePatterns == null) {
367            throw new IllegalArgumentException("Date and Patterns must not be null");
368        }
369
370        final TimeZone tz = TimeZone.getDefault();
371        final Locale lcl = locale==null ?Locale.getDefault() : locale;
372        final ParsePosition pos = new ParsePosition(0);
373        final Calendar calendar = Calendar.getInstance(tz, lcl);
374        calendar.setLenient(lenient);
375
376        for (final String parsePattern : parsePatterns) {
377            final FastDateParser fdp = new FastDateParser(parsePattern, tz, lcl);
378            calendar.clear();
379            try {
380                if (fdp.parse(str, pos, calendar) && pos.getIndex()==str.length()) {
381                    return calendar.getTime();
382                }
383            } catch(final IllegalArgumentException ignore) {
384                // leniency is preventing calendar from being set
385            }
386            pos.setIndex(0);
387        }
388        throw new ParseException("Unable to parse the date: " + str, -1);
389    }
...
Рейтинг: 0 / 0
конвертация формата даты
    #39921139
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
вадя,

можно ли сюда добавить формат yyyy-mm-ddThh24:mi:ss+Timezone ?

можно, если только ответишь кто вводит? человек?
или просто добавить к дате Thh24:mi:ss+Timezone?
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / конвертация формата даты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]