سؤال

أنا أستخدم تقويم غريغوري لتعيين تاريخ ووقت محددين لتطبيق ما باستخدام وظيفة المحددة للتقويم الغريغوري. عندما أستخدم طريقة GetTime () ، فإنه يعطيني الإخراج الصحيح ولكن عندما أحاول الوصول إلى Hour_of_day و Minute يعطي رقمًا خاطئًا.

    Calendar time = new GregorianCalendar();
    time.set(2010, Calendar.JANUARY, 1, 7, 20,0);       
    hour = time.HOUR_OF_DAY;
    minute = time.MINUTE; 

تعطي الساعة إخراج 11 والدقيقة تعطي قيمة 12.
أي اقتراحات حول كيفية إصلاح هذا؟ شكرًا

هل كانت مفيدة؟

المحلول

الكود الخاص بك هو مجرد تعيين ساعة/دقيقة إلى الثوابت. تحتاج إلى استدعاء Calendar.get (int):

hour = time.get(Calendar.HOUR_OF_DAY);
minute = time.get(Calendar.MINUTE);

نصائح أخرى

TL ؛ د

myGregCal
    .toZonedDateTime()  // Convert from legacy class GregorianCalendar to modern ZonedDateTime.
    .getHour()          // Get hour-of-day, 0-23.

Java.Time

أسهل بكثير مع فصول Java.time الحديثة التي تحل محل فصول وقت التاريخ القديمة المزعجة.

ال ZonedDateTime يمثل الفصل لحظة على الجدول الزمني في منطقة زمنية محددة مع دقة من النانو ثانية.

تحويل من الخاص بك GregorianCalendar باستخدام طرق جديدة تمت إضافتها إلى الفئات القديمة.

ZonedDateTime zdt = myGregCal.toZonedDateTime() ;

أو ابدأ جديدًا بدون GregorianCalendar صف دراسي.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.of( 2010 , Month.JANUARY , 1 , 7 , 20 , 0 , 0 , z );

إذا كنت ترغب في العمل مع جزء الوقت فقط ، استخرج أ LocalTime.

LocalTime localTime = zdt.toLocalTime() ;

إذا كنت تريد حقًا عدد الأعداد الصحيحة من الساعات والدقائق ، فيمكنك استجوابها.

int hour = zdt.getHour();
int minute = zdt.getMinute();

حول java.time

ال Java.Time تم بناء إطار العمل في Java 8 وما بعده. هذه الفصول تحل محل القديم المزعج ميراث فصول وقت التاريخ مثل java.util.Date, Calendar, & SimpleDateFormat.

ال وقت جودا مشروع ، الآن في نمط الصيانة, ، ينصح بالهجرة إلى Java.Time الطبقات.

لمعرفة المزيد ، انظر تعليمي أوراكل. والبحث في سعة مكدس للعديد من الأمثلة والتفسيرات. المواصفات JSR 310.

من أين تحصل على فصول java.time؟

ال Threeten-extra يمتد المشروع Java.time مع فصول إضافية. هذا المشروع هو أرضية إثبات للإضافات المستقبلية المحتملة إلى Java.time. قد تجد بعض الفصول المفيدة هنا مثل Interval, YearWeek, YearQuarter, ، و أكثر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top