code: private void calculateSplit(long localTime)
    {
      _localTimeOfEpoch = localTime;
      _dayOfEpoch = divFloor(_localTimeOfEpoch, MS_PER_DAY);
      _timeOfDay = _localTimeOfEpoch - MS_PER_DAY * _dayOfEpoch;
  
      calculateYear();
      calculateMonth();
  
      _hour = _timeOfDay / 3600000;
      _minute = _timeOfDay / 60000 % 60;
      _second = _timeOfDay / 1000 % 60;
      _ms = _timeOfDay % 1000;
  
      if (_timeZone == _gmtTimeZone) {
        _isDaylightTime = false;
        _zoneName = _stdName;
        _zoneOffset = 0;
      }
      else {
        // server/1470
        long tempOffset = _timeZone.getOffset(_localTimeOfEpoch);
        _zoneOffset = _timeZone.getOffset(_localTimeOfEpoch - tempOffset);
  
        if (_zoneOffset == _timeZone.getRawOffset()) {
          _isDaylightTime = false;
          _zoneName = _stdName;
        }
        else {
          _isDaylightTime = true;
          _zoneName = _dstName;
        }
      }
  
      _calendar.setTimeInMillis(_localTimeOfEpoch);
    }
docs: Calculate and set the calendar components based on the given time.
  
  @param localTime local time in milliseconds since the epoch