web-gelistirme-sc.com

Tarih sınıfından yıl ekleme

Diyelim ki bu var:

 PrintStream out = System.out;
 Scanner in = new Scanner(System.in);
 out.print("Enter a number ... ");
 int n = in.nextInt();

rastgele bir tarihim var, örneğin, 05.06.2015 (sabit bir tarih değil, her seferinde rastgele). Bu tarihin 'yılını almak ve bu yıl için' n 'ne olursa olsun eklemek istersem, bunu nasıl yaparım?

tarih Sınıfındaki tüm yöntemler 'int' değildir. 

ve bir int'den yıl eklemek için 'yıllar' da bir int olmak zorunda

13
Shawn

Date dosyasını Calendar dosyasına dönüştürmeniz gerekir.

Calendar c = Calendar.getInstance();
c.setTime(randomDate);
c.add(Calendar.YEAR, n);
newDate = c.getTime();

Yılı (veya diğer alanları) Takvim olarak düzenleyebilir ve ardından bir Tarihe dönüştürebilirsiniz.

43
Jon Lin

Bu soru uzun zamandır modern bir cevabı hak ediyor. Ve hatta bundan daha fazlası Java 8'de şu anki tarihe 10 yıl ekle bu sorunun bir kopyası olarak kabul edildi.

Diğer cevaplar, 2012'deki iyi cevaplardı. Yıllar devam etti, bugün kimsenin Calendar ve Date'dan bahsetmek yerine, şu anda modası geçmiş sınıfları SimpleDateFormat kullanmaması gerektiğine inanıyorum. Modern Java tarih ve saat API'sinin çalışması çok daha güzel.

bu yinelenen soruyu , örneğini kullanarak ilk önce ihtiyacımız olan

private static final DateTimeFormatter formatter 
        = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");

Bununla yapabiliriz:

    String currentDateString = "2017-09-12 00:00:00";
    LocalDateTime dateTime = LocalDateTime.parse(currentDateString, formatter);
    dateTime = dateTime.plusYears(10);
    String tenYearsAfterString = dateTime.format(formatter);
    System.out.println(tenYearsAfterString);

Bu yazdırır:

2027-09-12 00:00:00

Günün saatine ihtiyacınız yoksa, LocalDate yerine LocalDateTime sınıfını öneririm, çünkü tam olarak günün saati olmayan bir tarihtir.

    LocalDate date = dateTime.toLocalDate();
    date = date.plusYears(10);

Sonuç 2027-09-12 tarihidir.

Soru: Modern API'yi nerede öğrenebilirim?

Oracle tutorial ile başlayabilirsiniz. İnternette çok daha fazla malzeme var, aramaya gidin.

4
Ole V.V.

Date sınıfı size yardımcı olmaz, ancak Calendar sınıfı şunları yapabilir:

Calendar cal = Calendar.getInstance();
Date f;
...
cal.setTime(f);
cal.add(Calendar.YEAR, n); // Where n is int
f = cal.getTime();

Hala f değişkenine bir değer atamanız gerektiğine dikkat edin. Dizeleri tarihe dönüştürmek için sık sık SimpleDateFormat kullanırım.

Umarım bu size yardımcı olur.

3
Barranka

Java.util.Calendar türünü deneyin.

Calendar cal=Calendar.getInstance();
cal.setTime(yourDate.getTime());
cal.set(Calendar.YEAR,n);
1
adatapost

Herhangi bir tarihte bir yıl eklemek gerekirse, Takvim nesnesini kullanın.

Calendar dateMoreOneYear = Calendar.getInstance();
dateMoreOneYear.setTime(dateOriginal);
dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);
0
horelvis

Aynen böyle bir ay ve yıl için de deneyin (Haziran 2019)

Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, n); //here n is no.of year you want to increase
SimpleDateFormat format1 = new SimpleDateFormat("MMM YYYY");
System.out.println(cal.getTime());

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
0
Bhaskara Arani