powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / конвертация формата даты
36 сообщений из 36, показаны все 2 страниц
конвертация формата даты
    #39920576
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
подскажите кто знает как можно реализовать следующее
есть входящий параметр 2/12/2015 и мне нужно его конвертнуть в 02-12-2015, и это можно сделать легко если знаешь входящий формат, но если входящий формат может быть каждый раз разный к примеру не 2/12/2015, а 2.12.2015 или еще какой нибудь
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920578
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,
При данных вводных невозможно.
12 может быть месяц или день
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920579
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,
В параметре функции всегда договариваются - что передается, тип переменной....
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920585
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,
можно ли загнать в массив форматы
Код: java
1.
String [] date = {"d/M/yyyy","dd-MM-yyyy"}

и потом сверять их с входящей датой к примеру у нас на входе 2/12/2015 мы смотрим в массиве есть ли подходящий формат и потом подставляем в нашем случае мы находим d/M/yyyy его и подставляем в

Код: java
1.
2.
3.
DateFormat srcDf = new SimpleDateFormat(формат даты который мы нашли);
        Date date = srcDf.parse(str);
        DateFormat destDf = new SimpleDateFormat("dd-MM-yyyy");
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920588
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,
Как решить где месяц?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920591
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в данном случае можно отталкиваться от формата если 2/12/2017, то месяц 12 и соответственно наш формат это d/MM/yyyy
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920611
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,
А если 2/1/20, 02/01/20
?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920612
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
в данном случае можно отталкиваться от формата если 2/12/2017, то месяц 12

Почему 12 это месяц, а не день?
Как интерпретировать 10/12/2017 ?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920656
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,
согласен, но я пока не знаю как решить данную проблемму
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920657
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
Leonid Kudryavtsev,
согласен, но я пока не знаю как решить данную проблемму
убрать источник бардака
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920658
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть договорённость в порядке следования при вводе (день месяц год)
то
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        final String regex = "(\\d{1,2}).(\\d{1,2}).(\\d{2,2}$)";
        final String string = "12.02.16";

        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);
        fmt.format("%02d-%02d-20%02d ", Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)));
        System.out.print(sbuf.toString());


и без разницы как введён год, и какой разделитель
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920669
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
а если форматы дат будут разными?
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920673
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
а если форматы дат будут разными?
02.03.2020 и 03.02.2020 ?
если придумаешь алгоритм - те поставят памятник при жизни.
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920677
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
я к тому что если входной параметр 2017/02/02 т.е. формат даты yyyy/MM/dd
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920678
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

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

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

подскажите, как можно с помощью Вашего кода предположим распарсить 12-Jun-2019 и получить на выходе 2019-06-12
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920690
vlad2018
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

я вот сейчас пробовал и при вводе формата 12.02.2016 выдает неверный результат потому как ожидается 2016-02-12
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920692
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
я вот сейчас пробовал и при вводе формата 12.02.2016 выдает неверный результат потому как ожидается 2016-02-12
ну да код дан - меняй
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920696
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
подскажите, как можно с помощью Вашего кода предположим распарсить 12-Jun-2019 и получить на выходе 2019-06-12
с помощью регулярного выражения
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920697
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
Всем привет!
подскажите кто знает как можно реализовать следующее
есть входящий параметр 2/12/2015 и мне нужно его конвертнуть в 02-12-2015, и это можно сделать легко если знаешь входящий формат, но если входящий формат может быть каждый раз разный к примеру не 2/12/2015, а 2.12.2015 или еще какой нибудь

Любое java приложение запускается не в космосе, а в контексте локали.
Это означает что оно (приложение) знает в какой стране оно и какие есть языки.
Смотри такие переменные например

Код: java
1.
 java -Duser.language=th -Duser.country=TH -Duser.variant=TH



Еще помедитируй над https://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html

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

я не силен в этом и поэтому прошу помощи, пробовал, но не получается...
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920719
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
я не силен в этом и поэтому прошу помощи, пробовал, но не получается...
тогда надо определиться с вариантами ввода.
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920720
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018
я не силен в этом и поэтому прошу помощи, пробовал, но не получается...
по нормальному - предлагают ввод через календарик
...
Рейтинг: 0 / 0
конвертация формата даты
    #39920726
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlad2018,
Скажи тому кто ставил задачу, что можно чпросить дополнительно эксплорер юзверя. Или операционку.
Тогда можно решить
...
Рейтинг: 0 / 0
конвертация формата даты
    #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
36 сообщений из 36, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / конвертация формата даты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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