java - दो कैलेंडर वस्तुओं के घंटों में अंतर




android calendar simpledateformat (3)

आप निम्न प्रयास कर सकते हैं:

long seconds = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000;
int hours = (int) (seconds / 3600);

या जुडा-टाइम एपीआई के Period वर्ग का उपयोग करते हुए, आप कन्स्ट्रक्टर public Period(long startInstant, long endInstant) उपयोग कर सकते हैं और घंटे क्षेत्र पुनः प्राप्त कर सकते हैं:

Period period = new Period(c1.getTimeInMillis(), c2.getTimeInMillis());
int hours = period.getHours();

मेरे पास दो Calendar ऑब्जेक्ट हैं, और मैं ये देखना चाहता हूं कि उनके बीच कितना अंतर है, घंटों में।

यहां पहला Calendar

Calendar c1 = Calendar.getInstance();

और दूसरा Calendar

Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
c2.setTime(sdf.parse("Sun Feb 22 20:00:00 CET 2015"));

अब कहते हैं कि c1.getTime() है: Fri Feb 20 20:00:00 CET 2015 और Fri Feb 20 20:00:00 CET 2015 c2.getTime() Sun Feb 22 20:00:00 CET 2015

तो क्या ऐसा कोई ऐसा कोड है जो घंटे के पहले और दूसरे Calendar बीच अंतर वापस करेगा? मेरे मामले में यह 48 को वापस कर देना चाहिए


जावा 8 में आप कर सकते हैं

long hours = ChronoUnit.HOURS.between(c1.toInstant(), c2.toInstant());

जावा में सबसे गलत समझ का उपयोग संशोधक protected । हम जानते हैं कि यह एक अपवाद के साथ डिफ़ॉल्ट संशोधक के समान है जिसमें सबक्लास इसे देख सकते हैं। पर कैसे? यहां एक उदाहरण दिया गया है जो भ्रम को स्पष्ट रूप से स्पष्ट करता है:

  • मान लें कि हमारे पास 2 वर्ग हैं; Father और Son , प्रत्येक अपने पैकेज में:

    package fatherpackage;
    
    public class Father
    {
    
    }
    
    -------------------------------------------
    
    package sonpackage;
    
    public class Son extends Father
    {
    
    }
    
  • आइए Father को संरक्षित विधि foo() जोड़ें।

    package fatherpackage;
    
    public class Father
    {
        protected void foo(){}
    }
    
  • विधि foo() को 4 संदर्भों में बुलाया जा सकता है:

    1. एक ही पैकेज में स्थित एक वर्ग के अंदर जहां foo() परिभाषित किया गया है ( fatherpackage ):

      package fatherpackage;
      
      public class SomeClass
      {
          public void someMethod(Father f, Son s)
          {
              f.foo();
              s.foo();
          }
      }
      
    2. this उदाहरण के माध्यम से वर्तमान उदाहरण पर, सबक्लास के अंदर:

      package sonpackage;
      
      public class Son extends Father
      {
          public void sonMethod()
          {
              this.foo();
              super.foo();
          }
      }
      
    3. एक संदर्भ पर जिसका प्रकार एक ही वर्ग है:

      package fatherpackage;
      
      public class Father
      {
          public void fatherMethod(Father f)
          {
              f.foo(); // valid even if foo() is private
          }
      }
      
      -------------------------------------------
      
      package sonpackage;
      
      public class Son extends Father
      {
          public void sonMethod(Son s)
          {
              s.foo();
          }
      }
      
    4. एक संदर्भ पर जिसका प्रकार मूल वर्ग है और यह उस पैकेज के अंदर है जहां foo() परिभाषित किया गया है ( fatherpackage ) [इसे संदर्भ संख्या के अंदर शामिल किया जा सकता है। 1]:

      package fatherpackage;
      
      public class Son extends Father
      {
          public void sonMethod(Father f)
          {
              f.foo();
          }
      }
      
  • निम्नलिखित स्थितियां वैध नहीं हैं।

    1. एक संदर्भ पर जिसका प्रकार मूल वर्ग है और यह उस पैकेज के बाहर है जहां foo() परिभाषित किया गया है ( fatherpackage ):

      package sonpackage;
      
      public class Son extends Father
      {
          public void sonMethod(Father f)
          {
              f.foo(); // compilation error
          }
      }
      
    2. उप-वर्ग के एक पैकेज के अंदर एक गैर-सबक्लास (एक उप-वर्ग अपने संरक्षक सदस्यों से संरक्षित सदस्यों को विरासत में लेता है, और यह उन्हें गैर-उप-वर्गों के लिए निजी बनाता है):

      package sonpackage;
      
      public class SomeClass
      {
          public void someMethod(Son s) throws Exception
          {
              s.foo(); // compilation error
          }
      }
      






java android calendar simpledateformat