سؤال

لدي البرنامج الذي يحتاج إلى البدء في 1/1/09 و عندما أبدأ يوم جديد, البرنامج سوف تظهر في اليوم التالي.هذا ما لدي حتى الآن:

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
SimpleDateFormat sdf = new SimpleDateFormat("d/M/yyyy"); 
public void setStart()
{
    startDate.setLenient(false);
    System.out.println(sdf.format(startDate.getTime()));
}

public void today()
{
    newDay = startDate.add(5, 1);
    System.out.println(newDay);
//I want to add a day to the start day and when I start another new day, I want to add another day to that.
}

أنا على الحصول على الخطأ باطلا ولكن من المتوقع الباحث في newDay = startDate.إضافة(5, 1);' ماذا يجب أن أفعل ؟

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

المحلول

على Calendar كائن له add الأسلوب الذي يسمح بإضافة أو طرح قيم حقل معين.

على سبيل المثال ،

Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);

الثوابت من أجل تحديد الحقل يمكن العثور عليها في الحقل "الموجز" من Calendar فئة.

فقط للرجوع إليها في المستقبل ، جافا API المواصفات يحتوي على الكثير من المعلومات المفيدة حول كيفية استخدام الطبقات التي هي جزء من API جافا.


تحديث:

أنا على الحصول على الخطأ باطلا ولكن توقع الباحث في newDay = بداية التأريخ.إضافة(5, 1);' ماذا يجب أن تفعل ؟

على add الطريقة لا يعود أي شيء ، وبالتالي محاولة لتعيين نتيجة الدعوة Calendar.add غير صالح.

المحول البرمجي خطأ يشير إلى أن أحد يحاول تعيين void إلى متغير مع نوع من int.هذه ليست صالحة ، كما لا يمكن للمرء أن تعيين "لا شيء" إلى int متغير.

مجرد تخمين ولكن ربما قد يكون هذا ما يحاول أن يتحقق:

// Get a calendar which is set to a specified date.
Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);

// Get the current date representation of the calendar.
Date startDate = calendar.getTime();

// Increment the calendar's date by 1 day.
calendar.add(Calendar.DAY_OF_MONTH, 1);

// Get the current date representation of the calendar.
Date endDate = calendar.getTime();

System.out.println(startDate);
System.out.println(endDate);

الإخراج:

Thu Jan 01 00:00:00 PST 2009
Fri Jan 02 00:00:00 PST 2009

ما يحتاج إلى أن ينظر ما Calendar هو في الواقع.

A Calendar لا تمثيل التاريخ.بل هو تمثيل التقويم ، حيث يتم حاليا مشيرا في.من أجل الحصول على تمثيل من حيث التقويم مشيرا في الوقت الراهن ، ينبغي للمرء الحصول على Date من Calendar باستخدام getTime الأسلوب.

نصائح أخرى

إذا كنت يمكن أن البديل هو شرط الحكمة، نقل كل ما تبذلونه من تاريخ / يحتاج إلى JODA، التي هي مكتبة أفضل بكثير، مع مكافأة إضافية أن كل شيء تقريبا غير قابل للتغيير الوقت، وهذا يعني خاصية تعدد يأتي في مجانا.

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