Як перетворити поточну дату в рядок на Java?
Як перетворити поточну дату в рядок на Java?
Відповіді:
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
// GET DATE & TIME IN ANY FORMAT
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}
Взято звідси
Calendarбажаніше Date?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Використовуйте DateFormatреалізацію; напр SimpleDateFormat.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
2017-01-23
Краще чітко вказати бажаний / очікуваний часовий пояс.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
Сучасний спосіб Java 8 і пізніших версій - це рамка java.time .
Вкажіть часовий пояс, оскільки дата змінюється в усьому світі в будь-який момент.
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017-01-23
За замовчуванням ви отримуєте рядок у стандартному форматі ISO 8601 .
Для інших форматів використовуйте java.time.format.DateTimeFormatterклас.
Java.time каркас вбудований в Java 8 і пізніших версій. Ці класи витісняти неприємні старі застарілі класи дати і часу , такі як java.util.Date, Calendar, і SimpleDateFormat.
Проект Joda-Time , який зараз знаходиться в режимі обслуговування , радить перейти до класів java.time .
Щоб дізнатися більше, дивіться навчальний посібник Oracle . І шукайте переповнення стека за багатьма прикладами та поясненнями. Специфікація - JSR 310 .
Ви можете обмінюватися об'єктами java.time безпосередньо зі своєю базою даних. Використовуйте драйвер JDBC, сумісний з JDBC 4.2 або пізнішої версії. Немає потреби в струнах, немає потреби в java.sql.*заняттях.
Де отримати класи java.time?
Проект ThreeTen-Extra розширює java.time додатковими класами. Цей проект є доказом можливих майбутніх доповнень до java.time. Ви можете знайти деякі корисні класи тут , такі як Interval, YearWeek, YearQuarter, і більш .
Швидше:
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
Протягом часу як РРРР-ММ-дд
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
А бібліотека DateTime така:
імпорт org.joda.time.DateTime;
DateTime? Відповідь на переповнення стека повинна мати певне пояснення, оскільки цей сайт повинен бути більше, ніж бібліотека фрагментів.
Більшість відповідей є / були дійсними. Нова модифікація API JAVA для обробки дат забезпечила зменшення деякої попередньої неоднозначності в обробці дати Java.
Ви отримаєте застаріле повідомлення для подібних дзвінків.
new Date() // deprecated
Наведений вище виклик мав розробник припускати, що новий об’єкт Date надасть об'єкту Date з поточною міткою часу. Така поведінка не узгоджується з іншими класами Java API.
Новим способом цього є використання екземпляра календаря .
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
І тут конвенція про іменування не є досконалою, але це багато організовано. Для такої людини, як я, яка важко перебирає речі, але ніколи не забуде щось, якщо це звучить / здається логічним, це хороший підхід.
Це більше синоніму реального життя
Ще один спосіб зробити це - використання API часу Joda
new DateTime().toString("yyyy-MM-dd")
або багато очевидного
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
обидва повернуть однаковий результат.
java.util.Date, java.util.Calendarі java.text.SimpleTextFormatтепер спадщина , витісняється java.time класів. Також проект Joda-Time зараз перебуває в режимі обслуговування , команда радить перейти на java.time.
Clockреалізація в Java 8 точно така ж, як і старі класи. Тільки в Java 9 з'являється нова реалізація, здатна фіксувати поточний момент з роздільною здатністю, тонкою, як наносекунди.
public static Date getDateByString(String dateTime) {
if(dateTime==null || dateTime.isEmpty()) {
return null;
}
else{
String modified = dateTime + ".000+0000";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date dateObj = new Date();
Date dateObj1 = new Date();
try {
if (dateTime != null) {
dateObj = formatter.parse(modified);
}
} catch (ParseException e) {
e.printStackTrace();
}
return dateObj;
}
}
Stringформаті вашій функції.