Отображение текущего времени в 12-часовом формате с AM/PM
В настоящее время время отображается как 13:35. Однако я хочу отобразить как 12-часовой формат с AM/PM, то есть 13:35 вместо 13:35.
Текущий код, как показано ниже
private static final int FOR_HOURS = 3600000;
private static final int FOR_MIN = 60000;
public String getTime(final Model model) {
SimpleDateFormat formatDate = new SimpleDateFormat("HH:mm a");
formatDate.setTimeZone(userContext.getUser().getTimeZone());
model.addAttribute("userCurrentTime", formatDate.format(new Date()));
final String offsetHours = String.format("%+03d:%02d", userContext.getUser().getTimeZone().getRawOffset()
/ FOR_HOURS, Math.abs(userContext.getUser().getTimeZone().getRawOffset() % FOR_HOURS / FOR_MIN));
model.addAttribute("offsetHours",
offsetHours + " " + userContext.getUser().getTimeZone().getDisplayName(Locale.ROOT));
return "systemclock";
}
13 ответов
Самый простой способ получить его, используя шаблон даты - h:mm a
, где
- ч - час в час / час (1-12)
- м - минута в час
- a - Am/pm отметка
Фрагмент кода:
DateFormat dateFormat = new SimpleDateFormat("hh:mm a");
Использовать этот SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");
Использование "hh:mm a"
вместо "HH:mm a"
, Вот hh
для 12 часового формата и HH
для 24-часового формата.
Live Demo
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm:ss a");
h используется для времени AM/PM (1-12).
H используется в течение 24 часов (1-24).
а является маркером AM/PM
м минута в час
Примечание: два часа напечатают ведущий ноль: 01:13 вечера. Один час будет печататься без начального нуля: 13:13.
Похоже, в основном все уже били меня, но я отвлекся
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yy hh.mm.ss.S aa");
String formattedDate = dateFormat.format(new Date()).toString();
System.out.println(formattedDate);
Выходной: 11-сент.-13. 12.25.15.375.
// hh:mm will print hours in 12hrs clock and mins (e.g. 02:30)
System.out.println(DateTimeFormatter.ofPattern("hh:mm").format(LocalTime.now()));
// HH:mm will print hours in 24hrs clock and mins (e.g. 14:30)
System.out.println(DateTimeFormatter.ofPattern("HH:mm").format(LocalTime.now()));
// hh:mm a will print hours in 12hrs clock, mins and AM/PM (e.g. 02:30 PM)
System.out.println(DateTimeFormatter.ofPattern("hh:mm a").format(LocalTime.now()));
Используя Java 8:
LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
System.out.println(localTime.format(dateTimeFormatter));
Выход находится в AM/PM
Формат.
Sample output: 3:00 PM
tl;dr
Пусть современные классы java.time JSR 310 автоматически генерируют локализованный текст, а не жестко кодируют 12-часовые часы и AM / PM.
LocalTime // Represent a time-of-day, without date, without time zone or offset-from-UTC.
.now( // Capture the current time-of-day as seen in a particular time zone.
ZoneId.of( "Africa/Casablanca" )
) // Returns a `LocalTime` object.
.format( // Generate text representing the value in our `LocalTime` object.
DateTimeFormatter // Class responsible for generating text representing the value of a java.time object.
.ofLocalizedTime( // Automatically localize the text being generated.
FormatStyle.SHORT // Specify how long or abbreviated the generated text should be.
) // Returns a `DateTimeFormatter` object.
.withLocale( Locale.US ) // Specifies a particular locale for the `DateTimeFormatter` rather than rely on the JVM’s current default locale. Returns another separate `DateTimeFormatter` object rather than altering the first, per immutable objects pattern.
) // Returns a `String` object.
10:31 утра
Автоматически локализовать
Вместо того, чтобы настаивать на 12-часовом режиме с AM/PM, вы можете позволить java.time автоматически локализоваться для вас. Вызов DateTimeFormatter.ofLocalizedTime
.
Для локализации укажите:
-
FormatStyle
чтобы определить, насколько длинной или сокращенной должна быть строка. -
Locale
для определения:- Человеческий язык для перевода имени дня, имя месяца, и тому подобное.
- В культурных нормах решения вопросов сокращения, капитализации, пунктуация, сепараторы, и тому подобное.
Здесь мы получаем текущее время дня в определенном часовом поясе. Затем мы генерируем текст, чтобы представить это время. Мы локализуем на французский язык в культуре Канады, затем на английский язык в культуре США.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
LocalTime localTime = LocalTime.now( z ) ;
// Québec
Locale locale_fr_CA = Locale.CANADA_FRENCH ; // Or `Locale.US`, and so on.
DateTimeFormatter formatterQuébec = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_fr_CA ) ;
String outputQuébec = localTime.format( formatterQuébec ) ;
System.out.println( outputQuébec ) ;
// US
Locale locale_en_US = Locale.US ;
DateTimeFormatter formatterUS = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale_en_US ) ;
String outputUS = localTime.format( formatterUS ) ;
System.out.println( outputUS ) ;
Посмотрите, как этот код запускается вживую на IdeOne.com.
10 ч 31
10:31 утра
Если вы хотите текущее время с AM,PM в Android использовать
String time = new SimpleDateFormat("hh : mm a", Locale.getDefault()).format(Calendar.getInstance().getTime())
если вы хотите текущее время с утра, вечера
String time = new SimpleDateFormat("hh : mm a", Locale.getDefault()).format(Calendar.getInstance().getTime()).toLowerCase();`enter code here`
ИЛИ ЖЕ
С уровня API 26
LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
String time = localTime.format(dateTimeFormatter);
Просто замените приведенное ниже утверждение, и оно будет работать.
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Date;
public class Main {
public static void main(String [] args){
try {
DateFormat parseFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm a");
String sDate = "22-01-2019 13:35 PM";
Date date = parseFormat.parse(sDate);
SimpleDateFormat displayFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm a");
sDate = displayFormat.format(date);
System.out.println("The required format : " + sDate);
} catch (Exception e) {}
}
}
//To get Filename + date and time
SimpleDateFormat f = new SimpleDateFormat("MMM");
SimpleDateFormat f1 = new SimpleDateFormat("dd");
SimpleDateFormat f2 = new SimpleDateFormat("a");
int h;
if(Calendar.getInstance().get(Calendar.HOUR)==0)
h=12;
else
h=Calendar.getInstance().get(Calendar.HOUR)
String filename="TestReport"+f1.format(new Date())+f.format(new Date())+h+f2.format(new Date())+".txt";
The Output Like:TestReport27Apr3PM.txt
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
Это покажет дату и время
Чтобы поместить ваш текущий мобильный формат даты и времени в
9 февраля 2018 10:36:59
Date date = new Date();
String stringDate = DateFormat.getDateTimeInstance().format(date);
Вы можете показать это своему Activity
, Fragment
, CardView
, ListView
в любом месте с помощью TextView
` TextView mDateTime;
mDateTime=findViewById(R.id.Your_TextViewId_Of_XML);
Date date = new Date();
String mStringDate = DateFormat.getDateTimeInstance().format(date);
mDateTime.setText("My Device Current Date and Time is:"+date);
`
Вы можете использовать SimpleDateFormat для этого.
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");
Надеюсь, это поможет вам.