2013-10-11 26 views
6

JodaTime ile 'artı' veya 'eksi' işlevlerini kullanmadan ve en küçük satır satırlarını kullanmadan, saati değiştirmeden yeni bir tarihi nasıl ayarlayabilirim? ardından gerekli tarihi ile yeni DateTime oluşturmak ve tekrar saat, dakika ve saniye ayarlamak -Zamanı değiştirmeden tarihi değiştir

Benim ilk girişimi getHoursOfDay() ve getMinutesOfHour() vb kullanılarak ayrı int s DateTime arasında 'zaman' parçalarını saklamak oldu. Ancak bu yöntem oldukça karmaşıktır ve bunu yapmak için daha az ayrıntılı bir yöntem olup olmadığını merak ediyorum - ideal olarak sadece bir kod satırıyla. Örneğin

:

22/05/2013 13:40:02 >>>>30/08/2014 13:40:02

+0

Ben öncelikle düşünceye dayalı kapatmak için oy ettik. Bir problemi çözmenin en kolay yolu subjektiftir. Bunun yerine, "* Gün/ay/yıl nasıl değiştireceğimi bilmiyorum?" Ifadesini kullandıysanız, sorunuzu daha net hale getirmek için düzenleyin. Bu durumda, lütfen en iyi çabanızı da ekleyin. –

+2

'En kolayı '' En basit' olarak değiştirildi, ki bu çok daha az öznel olan –

+0

Açıklığa kavuşturmak için, bunu zaten yapmanın birkaç yolunu biliyorum, ancak bunlar ayrıntılı ve anlaşılır. Kullanıcının gerçekten akıcı bir yaklaşıma sahip olup olmadığını görmek istiyorum. –

cevap

1

Önceden kabul edilen yanıt, javadoc'a yalnızca bağlantı içerdiği için moderatör tarafından kaldırıldı. İşte düzenlenmiş sürümüdür.


Bunu bu

DateTime myDate = ... 
myDate.withDate(desiredYear, desiredMonth, desiredDayOfMonth); 

JavaDoc'u gibi yapabilirdi buradadır: DateTime.withDate(int year, int month, int dayOfMonth)

2

şart JodaTime mı? Bunu yapmanın temel yolu 1'dir. Zaman damgasından sadece zaman ayırın. 2. aynen böyle


long timestamp = System.currentTimeMillis(); //OK we have some timestamp 
long justTime = timestamp % 1000 * 60 * 60 * 24;// just tiem contains just time part 


long newTimestamp = getDateFromSomeSource();//now we have date from some source 
justNewDate = newTimestamp - (newTimestamp % 1000 * 60 * 60 * 24);//extract just date 

result = justNewDate + justTime; 

şey tarih için bunu ekleyin. Böyle

+0

Bunu çözme yönündeki önceki girişimlerim öneri kadar ayrıntılıydı, ancak sorunu tamamen beklenmedik bir yöntemle çözdünüz, bu yüzden bunun için +1 :) –

+0

Bu, gün ışığından tasarruf edilmesini hesaba katmaz. – SpaceTrucker

1

kullanım withFields:

new DateTime().withFields(new LocalDate(2000,1,1)) 

Bu LocalDate bulunan olanlarla DateTime tüm tarih saat alanlarını ayarlayacaktır - bu durumda yıl, ay ve gün. Bu, örneğin YearMonth gibi herhangi bir ReadablePartial uygulama ile çalışacaktır.

İlgili konular