AM / PM के साथ 12 घंटे के प्रारूप में वर्तमान समय प्रदर्शित करें


184

वर्तमान में 13:35 PM के रूप में प्रदर्शित होने वाला समय हालांकि मैं 12 घंटे के प्रारूप को AM / PM के साथ प्रदर्शित करना चाहता हूं, अर्थात 13:35 PM के बजाय 1:35 PM

वर्तमान कोड नीचे है

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";
}

7
कोशिशSimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");
तरसेम सिंह

1
प्रश्न से ऊपर वर्ष 2013 में कहा था और एक आप 2014 में उल्लेख किया है तो यह कैसे ऊपर सवाल है तेजी से सवाल का डुप्लिकेट भी दोनों सवालों विभिन्न तकनीकों के लिए कहा गया था कर सकते हैं
रोनन

4
@ J-Dizzle जावा प्रश्न स्विफ्ट प्रश्न का डुप्लिकेट कैसे हो सकता है?
मार्क रोटेवेल

दोह माफ़ी, तुम सही हो!
J-Dizzle

जवाबों:


452

तिथि पैटर्न का उपयोग करके इसे प्राप्त करने का सबसे आसान तरीका - h:mm a, जहां

  • एच - घंटे सुबह / दोपहर (1-12)
  • मीटर - घंटे में मिनट
  • ए - एम / पीएम मार्कर

सांकेतिक टुकड़ा :

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

प्रलेखन पर अधिक पढ़ें - SimpleDateFormat जावा 7


61
ध्यान दें कि दो h ("hh") का उपयोग करने से आपको एक अग्रणी शून्य (यानी 01:23 AM) मिलता है। एक "एच" आपको अग्रणी शून्य (1:23 AM) के बिना घंटा देता है।
बेन जकुबेन

9
'Am' और 'p.m' के बजाय AM & PM कैसे प्राप्त करें
akash bs

@akashbs मुझे लगता है कि आस-पास कोई आसान तरीका नहीं है, लेकिन आप कुछ इस तरह की कोशिश कर सकते हैं: अपनी पूर्ण तिथि स्ट्रिंग में, (लंबाई - 4) से स्थानापन्न कॉल करें (लंबाई -1) और इसे एक चर_नगरी में सहेजें फिर एक नया चर_मॉडल बनाएं जो इसका उपयोग करेगा पहले बनाया हुआ variable_original और "m" को "m" से बदल देता है, फिर विधि toUpperCase को कॉल करें इसके बाद अपनी पूरी तारीख स्ट्रिंग पर लौटें और बदलें (variable_original, variable_modified) को यह प्राप्त होगा जिसे आप देख रहे हैं
Tamim Attafi

@akashbs लेकिन आप स्थानीय लोगों का उपयोग कर सकते हैं, प्रत्येक स्थानीय अलग-अलग दिनांक प्रारूपों का उपयोग करता है, मेरा मानना ​​है कि यूएस लोकल का उपयोग करके आप जो भी खोज रहे हैं उसे प्राप्त कर सकते हैं
तमीम अताफी

@akashbs अधिक जानकारी के लिए इन डॉक्स की जाँच करें: developer.android.com/reference/java/text/SimpleDateFormat
तमीम अताफी

109

इसे इस्तेमाल करो SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm a");

यहां छवि विवरण दर्ज करें

SimpleDateFormat के लिए जावा डॉक्स


1
अब धमाका हुआ। ये स्वरूपण कोड अब DateTimeFormatterJSR 310 के अनुसार, कक्षा के प्रारूपण कोड द्वारा दबा दिए जाते हैं ।
बेसिल बोर्क

63

के "hh:mm a"बजाय का उपयोग करें "HH:mm a"। यहां hh12 घंटे के प्रारूप के लिए और HH24 घंटे के प्रारूप के लिए।

लाइव डेमो


धन्यवाद @RuchiraGayanRanaweei ... मैं बस 24 प्रारूप पर कब्जा करने और इसे AM / PM प्रारूप में परिवर्तित करने के लिए सोच रहा हूँ ...
gumuruh

यह महत्वपूर्ण है। मेरे पास सिर्फ एक मामला था जहां "2016-11-18T17: 28: 00" के बजाय "2016-11-18T05: 28: 00" को "2016-11-18टी 17: 28: 00" में बदल दिया गया क्योंकि मैंने गलत घंटे प्लेसहोल्डर का इस्तेमाल किया था। धन्यवाद!
केकजपांडा

20
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 बजे


17
SimpleDateFormat formatDate = new SimpleDateFormat("hh:mm:ss a");
  • h का उपयोग AM / PM समय (1-12) के लिए किया जाता है।

  • H का उपयोग 24 घंटे के समय (1-24) के लिए किया जाता है।

  • a AM / PM मार्कर है

  • मीटर मिनट में है

नोट: दो घंटे के लिए एक प्रमुख शून्य प्रिंट करेगा: 01:13 PM। एक एच प्रमुख शून्य के बिना प्रिंट करेगा: 1:13 PM।

लगता है कि मूल रूप से हर कोई मुझे पहले से ही हरा देता है, लेकिन मैं पचाता हूं


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

खैर, यह सबसे अच्छा जवाब है जो मुझे यहां मिला, धन्यवाद
मार्टिन वोल्क

7

जावा 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

उस फ़ॉर्मेटर ऑब्जेक्ट पर Localeकॉल करके निर्दिष्ट करें withLocale, मानव भाषा और सांस्कृतिक मानदंडों को निर्धारित करने के लिए AM/ PMटेक्स्ट के निर्माण में उपयोग करने के लिए ।
तुलसी बोर्कर

5

बस नीचे दिए गए बयान को बदलें और यह काम करेगा।

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

3

यदि आप 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();

या

एपीआई स्तर 26 से

LocalTime localTime = LocalTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
String time = localTime.format(dateTimeFormatter);

2
2019 में लंबे समय तक पुराने और कुख्यात परेशान करने वाले SimpleDateFormatवर्ग का उपयोग करने के लिए कृपया युवाओं को न सिखाएं । कम से कम पहले विकल्प के रूप में नहीं। और बिना किसी आरक्षण के नहीं। आज हमारे पास java.timeआधुनिक जावा तिथि और समय एपीआई और इसके बहुत बेहतर हैं DateTimeFormatter
ओएलवी वीवी

1
धन्यवाद। आधुनिक जवाब कम API स्तरों पर भी इस्तेमाल किया जा सकता है, तो आप जोड़ना ThreeTenABP अपने Android परियोजना के लिए, java.time की backport,। देखें कि एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे किया जाता है (इस तरह के एक साधारण कार्य के लिए, मूल्य बहस योग्य हो सकता है, लेकिन सिर्फ थोड़ी और तारीख और समय के काम के लिए मैं इसे सुझाता हूं)।
ओले वीवी

चूंकि एएम और पीएम अंग्रेजी के अलावा अन्य भाषाओं में शायद ही उपयोग किए जाते हैं, मैं शायद DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH)(या किसी अन्य अंग्रेजी बोलने वाले लोकेल) का उपयोग करूंगा ।
ओले वीवी

2
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm a");

यह दिनांक और समय प्रदर्शित करेगा


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

रास्ता बहुत जटिल और अनपेक्षित। यदि आपको अपग्रेड किए गए SimpleDateFormat का उपयोग करना चाहिए, तो कम से कम एक कॉल में सब कुछ डालें। कृपया यह भी बताएं कि आप आधी रात से लेकर 1. बजे तक वास्तविक घंटे के बजाय 12 का उपयोग क्यों करते हैं। साथ ही, फ़ाइल नामों के बारे में भी किसी ने नहीं पूछा।
रॉबर्ट

2

tl; डॉ

बता दें कि जेएसआर 310 के आधुनिक जावा.टाइम क्लासेस 12 घंटे की घड़ी और एएम / पीएम के बजाय स्वचालित रूप से स्थानीय पाठ उत्पन्न करते हैं।

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 घंटे की घड़ी पर जोर देने के बजाय, आप जावा को स्वचालित रूप से आपके लिए स्थानीय बनाना चाहते हैं। पुकारते हैं 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 पूर्वाह्न


0
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");

1
यदि आप अपने उत्तर के बारे में थोड़ा समझाते हैं तो यह अधिक उपयोगी है।
निमा दिराक्षजन

("hh: mm: ss a") >>> यहाँ अगर wedont एक 24hours उपयोग करेंगे तो दिखाई देगा। इसलिए यदि हम आपके समय में एएम / पीएम को इस प्रारूप में जोड़ना चाहते हैं। अगर कोई भ्रम है तो कृपया मुझे बताएं।
राजू अहमद

0

अपना वर्तमान मोबाइल दिनांक और समय प्रारूप डालने के लिए

फरवरी 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);

  `

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) {}
   }
}

3
आप एक अपवाद खा रहे हैं। अपवाद हैंडलर को कम से कम एक चेतावनी प्रदान करनी चाहिए।
एसएल बर्थ -

-2

आप इसके लिए SimpleDateFormat का उपयोग कर सकते हैं।

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

आशा है कि यह आपकी मदद करता है।


1
नया जोड़ने से पहले कृपया अन्य उत्तर पढ़ें। आपका उत्तर मूल रूप से एक जैसा है: stackoverflow.com/a/18736764/4687348
FelixSFD

6
आपका उत्तर उपयोगी हो सकता है, यदि आप अपने उत्तर के बीच अंतर की व्याख्या करेंगे, और एक पुरानी जिसे मैंने अपनी पहली टिप्पणी में जोड़ा था।
फेलिक्सएसएफडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.