SimpleDateFormat sınıfında bulunan tarih biçimleri nelerdir?


84

SimpleDateFormat sınıfında bulunan tarih biçimleri hakkında bana bilgi verebilir misiniz?

API'den geçtim ancak tatmin edici bir cevap bulamadım, herhangi bir yardım çok takdir ediliyor.


3
Hangi formatın peşindesin? Yapmak zorunda inşa ihtiyacınız unsurdan oluşuyor bir format.
David Grant

3
API'nin izin verdiği herhangi bir formatı oluşturabilirsiniz. Kesin bir liste yok.
Peter Lawrey

Yanıtlar:


140

Tarih ve saat biçimleri aşağıda iyi açıklanmıştır

SimpleDateFormat (Java Platform SE 7) - Tarih ve Saat Kalıpları

Yapabileceğiniz nformat sayısı olabilir. ör. dd/MM/yyyyveya YYYY-'W'ww-ugerekli kalıbı elde etmek için harfleri karıştırıp eşleştirebilirsiniz. Desen harfleri aşağıdaki gibidir.

  • G - Çağ belirleyicisi (AD)
  • y - Yıl (1996; 96)
  • Y - Hafta Yılı (2009; 09)
  • M - Yıldaki ay (Temmuz; Temmuz; 07)
  • w - Yıldaki hafta (27)
  • W - Aydaki hafta (2)
  • D - Yıldaki gün (189)
  • d - Aydaki gün (10)
  • F - Ay içinde haftanın günü (2)
  • E - Haftalık gün adı (Salı; Sal)
  • u - Haftanın gün sayısı (1 = Pazartesi, ..., 7 = Pazar)
  • a - AM / PM işaretçisi
  • H - Gün içindeki saat (0-23)
  • k - Gün içindeki saat (1-24)
  • K - am / pm cinsinden saat (0-11)
  • h - am / pm cinsinden saat (1-12)
  • m - Saat cinsinden dakika (30)
  • s - Dakikada saniye (55)
  • S - Milisaniye (978)
  • z - Genel saat dilimi (Pasifik Standart Saati; PST; GMT-08: 00)
  • Z - RFC 822 saat dilimi (-0800)
  • X - ISO 8601 saat dilimi (-08; -0800; -08: 00)

Ayrıştırmak için:

2000-01-23T04: 56: 07.000 + 0000

Kullanım: new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");


Teşekkürler Quoi..Ama tarihleri ​​EST, IST, gdt, gmt gibi farklı standartlara nasıl dönüştürebileceğimi lütfen bana bildirir misiniz?
Abhishek_Mishra

1
O zaman farklı bir yerel ayarda tarih arıyorsun. SimpleDateFormatyapıcıda yerel ayarlamaya izin verin. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Subhrajyoti Majumder

Tamam, aradığım bir şey bu ... Teşekkürler Quoi .. :)
Abhishek_Mishra

Açıklığınızı takdir ediyorum. :)
Subhrajyoti Majumder

1
Z ve 'Z'yi karıştırmayın. Ben aptaldım ve umarım başka kimse benim gibi olmaz.
Tiefan Ju

52

Http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html adresinden aldığım bazı örnek kodları atayım. Sonra anlayana kadar farklı seçeneklerle oynayabilirsiniz.

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)

   }

}

İyi şanslar!


7

java.time

GÜNCELLEME

Diğer Soruların modası geçmiştir. SimpleDateFormatYıllar önce modern java.time sınıflarının yerini almış gibi korkunç miras sınıfları.

Özel

Kendi özel biçimlendirme kalıplarınızı tanımlamak için, içindeki kodlar, içindeki kodlara DateTimeFormatterbenzer, ancak tam olarak aynı değildir SimpleDateFormat. Belgeleri incelediğinizden emin olun. Ve birçok örnek için Stack Overflow'da arama yapın.

DateTimeFormatter f = 
    DateTimeFormatter.ofPattern( 
        "dd MMM uuuu" , 
        Locale.ITALY 
    ) 
;

Standart ISO 8601

ISO 8601 tarih-saat değerleri birçok türleri için standart tanımlar biçimleri. Bu formatlar veri alışverişi için tasarlanmıştır, makine tarafından kolayca ayrıştırılır ve kültürler arasında insanlar tarafından kolayca okunur.

Java.time dizeleri ayrıştırma / oluştururken sınıflar varsayılan olarak ISO 8601 biçimler kullanır. toString& Methodlarını aramanız yeterlidir parse. Biçimlendirme deseni belirlemenize gerek yok.

Instant.now().toString()

2018-11-05T18: 19: 33.017554Z

UTC'deki bir değer Ziçin, sondaki UTC anlamına gelir ve "Zulu" olarak okunur.

Yerelleştirin

Bir biçimlendirme kalıbı belirtmek yerine, java.time'ın sizin için otomatik olarak yerelleştirilmesine izin verebilirsiniz . DateTimeFormatter.ofLocalized…Yöntemleri kullanın .

Belirli bir bölgedeki (bir saat dilimi) insanlar tarafından kullanılan duvar saati saatiyle güncel anı alın.

ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );

Saat diliminin adını köşeli parantez içinde eklemek için akıllıca genişletilmiş standart ISO 8601 biçiminde metin oluşturun.

zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00 [Afrika / Tunus]

Otomatik olarak yerelleştirilmiş metin oluşturun.

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );

String output = zdt.format( f );

çıktı: lundi 5 Kasım 2018 19:20:23 heure normale d'Europe centrale

Genellikle, sabit kodlu biçimlendirme desenleriyle uğraşmak yerine otomatik yerelleştirme için daha iyi bir uygulamadır.


Hakkında java.time

Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date, Calendar& SimpleDateFormat.

Daha fazla bilgi edinmek için Oracle Eğitimine bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .

Şu anda bakım modunda olan Joda-Time projesi, java.time sınıflarına geçişi tavsiye ediyor .

Sen değiştirebilir java.time sizin veritabanı ile doğrudan nesneleri. JDBC 4.2 veya üstü ile uyumlu bir JDBC sürücüsü kullanın . Dizelere gerek yok, derslere gerek yok . Hibernate 5 ve JPA 2.2 java.time'ı destekler .java.sql.*

Java.time derslerini nereden edinebilirim?


5

biçimleri buradan kontrol edin http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

ana

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

yöntem

 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;
            }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.