2015-05-11 10 views
6

Sanırım "Test" isimli bir sınıf ismim var ve bu sınıfın bir örneğini oluşturuyorum, Bu örneğin oluşturma tarihini biliyor muyum?Java'da bir nesnenin tarihini nasıl bulunur.

+1

Zaten bir (örnek) değişkeni olmadıkça, "Sınama" sınıfınızda, bunu yapamazsınız! – Ajoy

+0

Nesne oluşturulduğunda * neden umurunda? – Raedwald

+0

@Raedwald: Bir tekil tasarım deseni kullandığım için bir örneğin oluşturma süresini kontrol etmem gerektiğinden umurumda. –

cevap

6

Sen Test sınıfta bir Date örneği elemanına sahip ve mevcut tarihi ile Yapıcınızda (veya bildiriminde) içinde başlatarak, bu kendine dikkat etmek gerekir.

public class Test { 

    Date date = new Date(); 

    public Date getCreationDate() 
    { 
     return date; 
    } 
} 
+0

tamam, ancak her örneğin oluşturulma tarihi ile ilişkilendirildiği tek bir tasarım deseni uygulamam gerekiyor, böylece bu özel örnek oluşturulduğunda bilebiliriz. Nasıl uygulanacağına dair herhangi bir yorum yararlı olacaktır. –

+0

@MayankSharma Örneklerinizin oluşturulma tarihlerine eşleştirilmesini istiyor gibi geliyor. Bir Harita ile kolayca elde edebilirsiniz, ama ne anlamı var? Herhangi bir örnekte, getCreationDate() yöntemini çağırarak oluşturma tarihini alabilirsiniz. – Eran

+0

@MayankSharma Singleton tek bir örnek olduğu anlamına gelmez mi? –

5

Hayır, nesnelerin örtük zaman damgaları yoktur. Bilmeniz gerekiyorsa, sınıfınıza bir örnek değişkeni ekleyin.

public class Test { 
    private final Date creationDate = new Date(); 

    public Date getCreationDate() { 
     return creationDate; // or a copy of creation date, to be safe 
    } 
} 
+0

Bu derlenmez, 'createDate' türünü belirtmek için sisotu. – NikolayKondratyev

+0

Teşekkürler, –

+0

'u güncelledim ve düzeltdim, ancak her bir örneğin oluşturulduğu tarih ile ilişkilendirildiği tek bir tasarım deseni uygulamam gerekiyor. Nasıl uygulanacağına dair herhangi bir yorum yararlı olacaktır. –

0

kaçının java.util.Date

java.util.Date sınıfı Java 8. eski java.util.Date yeni java.time package (Tutorial) tarafından demode olması haricinde diğer iki cevaplar doğru /.Calendar sınıfları, kötü şöhretli, kafa karıştırıcı ve kusurludur. Onları kaçının.

java.time

java.time mevcut anı alın.

ZonedDateTime instantiated = ZonedDateTime.now(); 

UTC

Genellikle iyi her UTC saat diliminde arka uç işlemi (iş mantığı, veritabanı, depolama) yapma alışkanlığı elde etmek. Yukarıdaki kod, JVM’nin geçerli varsayılan saat dilimine dolaylı olarak bağlı kalıyor.

Geçerli anı java.time içinde UTC'ye almak için.

ZonedDateTime instantiated = ZonedDateTime.now(ZoneOffset.UTC); 
İlgili konular