Может ли кто-нибудь сообщить мне о форматах даты, доступных в классе SimpleDateFormat.
Я прошел через api, но не смог найти удовлетворительного ответа. Любая помощь приветствуется.
Может ли кто-нибудь сообщить мне о форматах даты, доступных в классе SimpleDateFormat.
Я прошел через api, но не смог найти удовлетворительного ответа. Любая помощь приветствуется.
Ответы:
Форматы даты и времени подробно описаны ниже.
SimpleDateFormat (Java Platform SE 7) - шаблоны даты и времени
n
Может быть количество форматов, которые вы можете сделать. ex - 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
- Час в am / pm (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
. Обязательно изучите документацию. И поищите множество примеров в Stack Overflow.
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 и произносится «Zulu».
Вместо того, чтобы указывать шаблон форматирования, вы можете позволить 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 );
вывод: lundi 5 novembre 2018 à 19:20:23 heure normale d'Europe centrale
Как правило, лучше использовать автоматическую локализацию, чем беспокоиться о жестко заданных шаблонах форматирования.
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, иSimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial . И поищите в 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;
}