Ответ 1
Ваш класс - это пользовательский класс, который производит вывод, указанный Object.toString
. Переименуйте класс в другое, кроме Date
, чтобы java.util.Date
был импортирован правильно
Я хочу напечатать текущую дату и время в java..Это код, который я пытаюсь из учебника java:
import java.util.*;
public class Date {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date using toString()
System.out.println(date.toString());
}
}
Он компилируется отлично. Но выдаваемый результат:
Дата @15db9742
Пока я ожидаю выход следующим образом:
Пн Май 04 09:51:52 CDT 2009
Что не так с кодом?
EDIT: Я попытался переименовать класс. Измененный код:
import java.util.*;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date d = new Date();
// display time and date using toString()
System.out.println(d.toString());
}
}
Вот как я скомпилировал код и запустил:
sou @sou-linux: ~/Desktop/java $javac DateDemo.java
sou @sou-linux: ~/Desktop/java $java DateDemo
Вывод:
Дата @15db9742
Ваш класс - это пользовательский класс, который производит вывод, указанный Object.toString
. Переименуйте класс в другое, кроме Date
, чтобы java.util.Date
был импортирован правильно
Вы получаете значение по умолчанию toString()
из Object
, потому что вы создали свой собственный класс с именем Date
, который скрывает импортированный Date
от java.util.
. Вы можете переименовать свой класс или использовать каноническое имя java.util.Date
, например
public static void main(String args[]) {
java.util.Date date = new java.util.Date();
System.out.println(date);
}
Результат здесь
Mon Nov 03 10:57:45 EST 2014
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//get current date time with Date()
Date date = new Date();
System.out.println(dateFormat.format(date));
//get current date time with Calendar()
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
}
import java.util.Date;
public class Dte {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());
}
}
Измените имя класса Date
на Dte
или что-то еще, и код будет работать правильно.
Выход: Mon Nov 03 21:27:15 IST 2014
Нельзя использовать метод toString(), потому что:
Метод toString для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр, знак at-sign `@'и шестнадцатеричное представление без знака хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:
getClass(). getName() + '@' + Integer.toHexString(hashCode())
Цитата из docs.oracle: http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html).
Класс Date предназначен для использования, как и все остальные. Просто хотел объяснить/дать вам ссылку на то, почему.
Переименуйте свой класс из Date в другое. Следующее работает так, как ожидалось:
import java.util.Date;
public class ImplClass
{
public static void main(String args[])
{
Date date = new Date();
// display time and date using toString()
System.out.println(date.toString());
}
}
Выход находится в нужном формате
Mon Nov 03 09:49:57 CST 2014
Ваше имя класса Date, поэтому
Date date = new Date();
создаст объект вашего класса, а при вызове date.toString()
он будет использоваться по умолчанию Object.toString()
.
Поэтому, если вам нужно использовать класс java.util.Date
, переименуйте класс Date
в нечто другое
Вы можете сохранить код так же просто, как:
import java.util.*;
public class Today{
public static void main(String args[]){
System.out.println("System Date :: ");
System.out.println(new Date());
}
}
Также, как изменить имя класса на сегодняшний день или что-то еще, но не Date, поскольку это ключевое слово
Вы можете попробовать это,
import java.util.Date;
public class CurrentDate
{
public static void main(String[] args)
{
Date currentDate = new Date();
System.out.println("Curent Date and Time - " + currentDate.toString());
}
}
Вывод:
Mon May 04 09:51:52 CDT 2009
Кроме того, вы можете ссылаться на приведенные ниже ссылки на форматирование даты и времени. Очень полезно.
https://docs.oracle.com/javase/tutorial/datetime/iso/datetime.html
https://docs.oracle.com/javase/7/docs/api/java/sql/Date.html