O zamandan bu yana nasıl Saat ve Dakika alıyorsunuz Date.getHours
ve Date.getMinutes
kullanımdan kaldırılıyor? Google aramada bulduğum örnekler kullanımdan kaldırılmış yöntemler kullandı.
O zamandan bu yana nasıl Saat ve Dakika alıyorsunuz Date.getHours
ve Date.getMinutes
kullanımdan kaldırılıyor? Google aramada bulduğum örnekler kullanımdan kaldırılmış yöntemler kullandı.
Yanıtlar:
Standart java.util.Date sınıfları yerine Joda Time'ı kullanmayı deneyin . Joda Time kütüphanesi, tarihleri işlemek için çok daha iyi bir API'ya sahiptir.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
Joda Time kütüphanesini kullanmanın avantaj ve dezavantajları için bu soruya bakın .
Joda Time ayrıca Java'nın gelecekteki bazı sürümlerine standart bir bileşen olarak dahil edilebilir, bkz. JSR-310 .
Geleneksel java.util.Date ve java.util.Calendar sınıflarını kullanmanız gerekiyorsa, yardım için JavaDoc'larına bakın ( java.util.Calendar ve java.util.Date ).
Verilen Date örneğindeki alanları getirmek için bunun gibi geleneksel sınıfları kullanabilirsiniz.
Date date = new Date(); // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR); // gets hour in 12h format
calendar.get(Calendar.MONTH); // gets month number, NOTE this is zero based!
Date.getHours için Javadoc'tan
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Öyleyse kullan
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
ve getMinutes için eşdeğeridir.
ZonedDateTime
. Bunun yerine kullanın .
Joda-Time hayranıyım , Java 8 nihayet değerli bir Java standart çözümü olan java.time paketini tanıtıyor ! Java.time hakkında saatler ve dakikalar dışında iyi miktarda bilgi için Java SE 8 Tarih ve Saat makalesini okuyun .
Özellikle LocalDateTime
sınıfa bakın.
Saatler ve dakikalar:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. now()
Tutarlılık için yalnızca bir kez okuyun (iki arama arasında zaman geçecektir). Tarih gerçekten alakasızsa, LocalTime
işe yarıyor.
ZonedDateTime
sınıf yerine kullanın LocalDateTime
. İle LocalDateTime
sen hiçbir şey, hiçbir neden değerli zaman dilimi bilgilerini atarak vardır kazandı.
ZonedDateTime.now().getHour()
… Ya da…
LocalTime.now().getHour()
ZonedDateTime
JD tarafından cevap iyi değil en uygunudur. Bu cevap LocalDateTime
sınıfı kullanır . Herhangi bir saat dilimi veya UTC'den sapma kavramına sahip olmayan bu sınıf, bir anı temsil edemez.
Kullanmak daha iyi ZonedDateTime
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
ZoneId
Argümanı atlarsanız, JVM'nin geçerli varsayılan saat dilimi kullanılarak çalışma zamanında örtük olarak uygulanır.
Yani bu:
ZonedDateTime.now()
… Bununla aynıdır:
ZonedDateTime.now( ZoneId.systemDefault() )
İstediğiniz / beklenen saat diliminizi geçerek açık olmak daha iyi. Varsayılan çalışma zamanı sırasında herhangi bir anda değişebilir .
Önemliyse, saat dilimini kullanıcıyla doğrulayın.
ZonedDateTime
Saat ve dakika için sorgulayın .
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTime
Saat dilimi olmadan sadece günün saatini istiyorsanız, ayıklayın LocalTime
.
LocalTime lt = zdt.toLocalTime() ;
Veya ZonedDateTime
doğrudan atlayarak tamamen atlayın LocalTime
.
LocalTime lt = LocalTime.now( z ) ; // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).
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 için Oracle Eğiticisine bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .
Artık 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 sonraki bir sürümüyle uyumlu bir JDBC sürücüsü kullanın . Dizeye gerek yok, sınıflara gerek yok .java.sql.*
Java.time sınıflarını nereden edinebilirsiniz?
ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time'a gelecekteki olası eklemeler için bir kanıt zeminidir. Burada bazı yararlı sınıfları gibi bulabilir Interval
, YearWeek
, YearQuarter
, ve daha .
Takvimi deneyin. Bir Calender-Object almak için getInstance komutunu kullanın. Ardından, gerekli Tarihi ayarlamak için setTime öğesini kullanın. Artık get (int alanı) 'nı ihtiyacınız olan değerleri okumak için HOUR_OF_DAY gibi uygun sabitle kullanabilirsiniz.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Bu işlevler int değerlerini saat ve dakika olarak döndürür.
java.sql.Time
mi? Kesinlikle bu modası geçmiş sınıfı, oyuna sokmak için hiçbir sebep yok java.time.LocalTime
. Aşırı karmaşık oluyorsun.
getMinutes()
o ki (java 1.8 kullanıyorum) ve yerineCalendar.get(Calendar.MINUTE)
Dakikalar ve saatler almanın başka bir yolu da SimpleDateFormat kullanmaktır.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
ve java.text.SimpleDateFormat
şimdi mirası supplanted, java.time sonra Java 8 ve yerleşik sınıflara. Oracle'ın Öğreticisine bakın .
Reklam joda zaman görünümlü öneriyoruz. http://www.joda.org/joda-time/
Kalın projeme başka bir kütüphane eklemekten korkuyordum, ama sadece kolay, hızlı ve akıllı ve harika. Ayrıca, mevcut kodla bir dereceye kadar güzel oynuyor.
Bunu tavsiye etmese de, java.util.Date'de birçok yöntem kullanımdan kaldırılmış olsa da, hala çalıştıklarını belirtmeye değer olduğunu düşünüyorum. Önemsiz durumlarda, bunları kullanmak uygun olabilir. Ayrıca, java.util.Calendar oldukça yavaştır, bu nedenle getMonth ve getYear on Date çok daha hızlı olabilir.
import java.util.*
Takvim ve biçimlendirici sınıfını kullanarak saat ve dakika alabilirsiniz. Calendar cal = Calendar.getInstance()
ve Formatter fmt=new Formatter()
görüntüleme saati ve dakikası için bir format ayarlayın fmt.format("%tl:%M",cal,cal)
ve System.out.println(fmt)
çıktı çıktıları şunun gibi10:12
java.util.Date
,java.util.Calendar
vejava.text.SimpleDateFormat
şimdi mirası supplanted, java.time sonra Java 8 ve yerleşik sınıflara. Oracle'ın Öğreticisine bakın .