Хто-небудь може повідомити мене про формати дат, доступні в класі SimpleDateFormat.
Я пройшов api, але не зміг знайти задовільної відповіді. Будь-яка допомога дуже вдячна.
Хто-небудь може повідомити мене про формати дат, доступні в класі SimpleDateFormat.
Я пройшов api, але не зміг знайти задовільної відповіді. Будь-яка допомога дуже вдячна.
Відповіді:
Формати дати та часу добре описані нижче
SimpleDateFormat (Java Platform SE 7) - Шаблони дати та часу
Може існувати n
кількість форматів, які ви можете створити. ех - dd/MM/yyyy
або YYYY-'W'ww-u
ви можете змішувати та поєднувати літери, щоб досягти потрібного зразка. Візерунки букв наведені нижче.
G
- Позначник ери (AD)y
- Рік (1996; 96)Y
- Рік тижня (2009; 09)M
- Місяць у році (липень; липень; 07)w
- Тиждень у році (27)W
- Тиждень у місяці (2)D
- День у році (189)d
- День у місяці (10)F
- День тижня в місяці (2)E
- Назва дня в тижні (вівторок; вівторок)u
- номер дня тижня (1 = понеділок, ..., 7 = неділя)a
- маркер AM / PMH
- Година в день (0-23)k
- Година в день (1-24)K
- Година вранці / вечора (0-11)h
- Година вранці / вечора (1-12)m
- Хвилина в годині (30)s
- Другий за хвилину (55)S
- Мілісекунди (978)z
- загальний часовий пояс (тихоокеанський стандартний час; PST; GMT-08: 00)Z
- часовий пояс RFC 822 (-0800)X
- часовий пояс ISO 8601 (-08; -0800; -08: 00)Для синтаксичного аналізу:
2000-01-23T04: 56: 07.000 + 0000
Використання:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat
дозволити встановити локаль у конструкторі. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Дозвольте мені викинути деякий приклад коду, який я отримав з http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html Тоді ви можете пограти з різними опціями, поки не зрозумієте його.
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
Date now = new Date();
//This is just Date's toString method and doesn't involve SimpleDateFormat
System.out.println("toString(): " + now); // dow mon dd hh:mm:ss zzz yyyy
//Shows "Mon Oct 08 08:17:06 EDT 2012"
SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
System.out.println("Format 1: " + dateFormatter.format(now));
// Shows "Mon, 2012-10-8 at 8:17:6 AM EDT"
dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Format 2: " + dateFormatter.format(now));
// Shows "Mon 2012.10.08 at 08:17:06 AM EDT"
dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
System.out.println("Format 3: " + dateFormatter.format(now));
// Shows "Monday, October 8, 2012"
// SimpleDateFormat can be used to control the date/time display format:
// E (day of week): 3E or fewer (in text xxx), >3E (in full text)
// M (month): M (in number), MM (in number with leading zero)
// 3M: (in text xxx), >3M: (in full text full)
// h (hour): h, hh (with leading zero)
// m (minute)
// s (second)
// a (AM/PM)
// H (hour in 0 to 23)
// z (time zone)
// (there may be more listed under the API - I didn't check)
}
}
Удачі!
ОНОВЛЕННЯ
Інші питання застаріли. Такі страшні класи, які SimpleDateFormat
були витіснені роками тому сучасними класами java.time .
Для визначення власних шаблонів форматування коди в DateTimeFormatter
коді подібні, але не зовсім такі, як коди в SimpleDateFormat
. Обов’язково вивчіть документацію. І шукайте переповнення стека, щоб знайти багато прикладів.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
Стандарт ISO 8601 визначає формати для багатьох типів значень дати та часу. Ці формати призначені для обміну даними, легко аналізуються машиною, а також легко читаються людьми в різних культурах.
У java.time класи використовують ISO 8601 формати за замовчуванням при створенні / розбору рядків. Просто викликайте toString
& parse
методи. Не потрібно вказувати шаблон форматування.
Instant.now().toString()
2018-11-05T18: 19: 33.017554Z
Для значення в UTC, в Z
кінці означає UTC, і вимовляється як "зулу".
Замість того, щоб вказати шаблон форматування, ви можете дозволити java.time автоматично локалізувати для вас. Використовуйте DateTimeFormatter.ofLocalized…
методи.
Отримайте поточний момент за допомогою годинника настінного годинника, який використовують люди певного регіону (часовий пояс).
ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );
Створіть текст у стандартному форматі ISO 8601, розумно розширений, щоб додати назву часового поясу у квадратні дужки.
zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00 [Африка / Туніс]
Створити автоматично локалізований текст.
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
вихід: понеділок, 5 листопада 2018 р., 19:20:23 центральний час Європи
Як правило, краща практика для автоматичної локалізації, а не ладу з жорстко закодованими шаблонами форматування.
Java.time каркас вбудований в Java 8 і пізніших версій. Ці класи витісняти неприємні старі застарілі класи дати і часу , такі як java.util.Date
, Calendar
, і SimpleDateFormat
.
Щоб дізнатись більше, див. Підручник Oracle . І шукайте в Stack Overflow багато прикладів та пояснень. Специфікація - JSR 310 .
Проект Joda-Time , який зараз перебуває в режимі обслуговування , радить перейти на класи java.time .
Ви можете обмінювати об'єкти java.time безпосередньо з базою даних. Використовуйте драйвер JDBC, сумісний з JDBC 4.2 або новішою. Не потрібні рядки, не потрібні java.sql.*
класи. Hibernate 5 та JPA 2.2 підтримують java.time .
Де отримати класи java.time?
перевірте формати тут http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
головний
System.out.println("date : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));
метод
public String getMyDate(String myDate, String returnFormat, String myFormat)
{
DateFormat dateFormat = new SimpleDateFormat(returnFormat);
Date date=null;
String returnValue="";
try {
date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
returnValue = dateFormat.format(date);
} catch (ParseException e) {
returnValue= myDate;
System.out.println("failed");
e.printStackTrace();
}
return returnValue;
}