Java создать объект даты с помощью строки значений - программирование
Подтвердить что ты не робот

Java создать объект даты с помощью строки значений

Я использую это, чтобы получить текущее время:

java.util.Calendar cal = java.util.Calendar.getInstance();
    System.out.println(new java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
            .format(cal.getTime()));

Я хочу поместить значение (которое я его распечатаю) в объект даты, я пробовал это:

Date currentDate = new Date(value);

но eclipse говорит мне, что эта функция не очень хорошая.

Edit value - это значение, которое я напечатал вам с помощью system.out.println

4b9b3361

Ответ 1

Всякий раз, когда вы хотите преобразовать объект String to Date, используйте SimpleDateFormat#parse
Попробуйте использовать

String dateInString = new java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
        .format(cal.getTime())
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss");
Date parsedDate = formatter.parse(dateInString);

.Дополнительная вещь - если вы хотите преобразовать Date в String, то вы должны использовать функцию SimpleDateFormat#format.
Теперь точка для вас   new Date(String) устарел и не рекомендуется сейчас. Теперь, когда кто-то хочет разобрать, он должен использовать SimpleDateFormat#parse.

Ответ 2

Использовать метод анализа SimpleDateFormat:

import java.text.DateFormat;
import java.text.SimpleDateFormat;

String inputString = "11-11-2012";
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date inputDate = dateFormat.parse(inputString);

Ответ 3

ПЕРВЫЙ ИЗ ВСЕХ ЗНАТЬ ПРИЧИНУ, ПОЧЕМУ ЕСЛИ ОСУЩЕСТВЛЯЕТСЯ.

Дата имеет только один конструктор Дата (длинная дата), который запрашивает дату в длинном типе данных.

Конструктор, который вы используете

Дата (строка s) Устаревшее. Начиная с версии JDK версии 1.1, заменяется DateFormat.parse(String s).

Вот почему eclipse сообщает, что эта функция не работает.

См. официальные документы

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html


Устаревшие методы из вашего контекста - Источник - http://www.coderanch.com/t/378728/java/java/Deprecated-methods

Существует ряд причин, по которым метод или класс могут устаревать. API не может быть легко расширяемым, не нарушая обратной совместимости и, следовательно, быть замененным более мощным API (например, java.util.Date устарел в пользу Calendar или модели событий Java 1.0). Он может также просто не работать или давать неправильные результаты при определенных обстоятельствах (например, некоторые из классов потока java.io не работают должным образом с некоторыми кодировками). Иногда API просто плохо продуман (SingleThreadModel в API сервлета) и заменяется ничем. И некоторые из ранних звонков были заменены на "Java Bean" - совместимые методы (размер getSize, границы методом getBounds и т.д.)


SEVRAL SOLUTIONS - ТОЛЬКО GOOGLE IT -

Вы можете использовать дату (длинную дату). Преобразуя свою дату String в длинные миллисекунды, а stackoverflow имеет столько сообщений для этой цели.

преобразование строки даты в миллисекунды в java

Ответ 4

 import java.util.Date;
 import java.text.SimpleDateFormat;

Выше приведен метод импорта, ниже приведен простой код для даты

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();

 system.out.println((dateFormat.format(date))); 

Ответ 5

Попробуйте следующее: -

try{
        String valuee="25/04/2013";
        Date currentDate =new SimpleDateFormat("dd/MM/yyyy").parse(valuee);
        System.out.println("Date is ::"+currentDate);
        }catch(Exception e){
            System.out.println("Error::"+e);
            e.printStackTrace();
        }

Вывод: -

   Date is ::Thu Apr 25 00:00:00 GMT+05:30 2013

Ваше значение должно быть правильным.

В вашем вопросе также вы попросили об этом ниже: -

   Date currentDate = new Date(value);

Этот стиль конструктора даты уже устарел.Таким образом, его больше не использовать. Поскольку мы знаем, что Date имеет 6 конструкторов. Подробнее

Ответ 7

Что вы в основном пытаетесь сделать, так это:

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

Причина заключается в том, что String, который вы печатаете, представляет собой представление String Date в вашем требуемом формате. Если вы попытаетесь преобразовать его на сегодняшний день, вы, в конечном итоге, будете делать то, что я упомянул выше.

Форматирование Date (cal.getTime()) на String и попытка вернуть обратно Date из него - не имеет смысла. Date не имеет формата как такового. Вы можете получить представление String только с помощью SDF.

Ответ 8

Вот оптимизированное решение для этого с помощью метода SimpleDateFormat parse().

SimpleDateFormat formatter = new SimpleDateFormat(
        "EEEE, dd/MM/yyyy/hh:mm:ss");
String strDate = formatter.format(new Date());

try {
    Date pDate = formatter.parse(strDate);
} catch (ParseException e) { // note: parse method can throw ParseException
    e.printStackTrace();
}

Несколько вещей, чтобы заметить

  • Нам не нужно создавать экземпляр календаря для получения текущей даты & Амп; вместо этого используйте new Date()
  • Также он не требует двух экземпляров от SimpleDateFormat как найденный в самом голосовавшем ответе на этот вопрос. Это просто потеря памяти
  • Кроме того, вылавливание общего исключения, такого как Exception, является плохой практикой, когда мы знаем, что метод parse имеет шанс выбросить ParseException. Нам нужно быть как можно более конкретным при работе с исключениями. Вы можете ссылаться, бросает исключение из-за плохой практики?