219

目前时间显示为下午 13:35 但是我想显示为上午/下午的 12 小时格式,即下午 1: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";
}
4

16 回答 16

508

最简单的方法是使用日期模式 - h:mm a,其中

  • h - 上午/下午的小时 (1-12)
  • m - 分钟
  • a - 上午/下午标记

代码片段:

DateFormat dateFormat = new SimpleDateFormat("hh:mm a");

阅读有关文档的更多信息 - SimpleDateFormat java 7

于 2013-09-11T06:49:57.757 回答
118

用这个SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");

在此处输入图像描述

SimpleDateFormat 的 Java 文档

于 2013-09-11T06:53:42.367 回答
77

使用"hh:mm a"而不是"HH:mm a". 这里hh是 12 小时格式和HH24 小时格式。

现场演示

于 2013-09-11T06:54:18.730 回答
34
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm:ss a");
  • h 用于上午/下午时间 (1-12)。

  • H 用于 24 小时时间 (1-24)。

  • a 是 AM/PM 标记

  • m 是小时中的分钟

注意:两个 h 将打印前导零:01:13 PM。一个 h 将打印没有前导零:下午 1:13。

看起来基本上每个人都已经打败了我,但我离题了

于 2015-12-29T19:13:55.763 回答
21
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yy hh.mm.ss.S aa");
String formattedDate = dateFormat.format(new Date()).toString();
System.out.println(formattedDate);

输出:11-Sep-13 12.25.15.375 PM

于 2013-09-11T06:55:59.237 回答
14
// 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())); 
于 2017-09-18T21:20:54.193 回答
10

使用 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
于 2017-09-29T09:39:04.033 回答
7

如果您想在Android中使用AM、PM 的当前时间

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();

或者

从 API 级别 26

LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
String time = localTime.format(dateTimeFormatter);
于 2019-01-30T05:32:09.433 回答
6

只需替换以下语句即可。

SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");
于 2013-09-11T08:56:54.093 回答
5

tl;博士

让 JSR 310 的现代java.time类自动生成本地化文本,而不是硬编码 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

自动本地化

与其坚持使用 AM/PM 的 12 小时制,不如让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

于 2019-09-03T01:42:34.320 回答
2
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm a");

这将显示日期和时间

于 2015-04-23T14:34:32.060 回答
2
    //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
于 2015-04-27T10:20:02.347 回答
1

将您当前的移动日期和时间格式放入

2018 年 2 月 9 日晚上 10:36:59

Date date = new Date();
 String stringDate = DateFormat.getDateTimeInstance().format(date);

您可以使用Activity_ Fragment_CardViewListViewTextView

` 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);

  `
于 2018-02-09T17:26:44.530 回答
0
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) {}
   }
}
于 2019-01-22T11:09:49.157 回答
0
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");
于 2015-12-06T08:52:20.183 回答
-2

您可以为此使用 SimpleDateFormat。

SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");

希望这对您有所帮助。

于 2017-01-18T09:32:19.813 回答