RTC acting strange

Your code does take quite some time to do all those the serial prints. Add that time to the delay(1000) and the time between 2 prints will be definitely more than 1 second (say ~1.1 second) so once in about 10 times it will skip a second.

instead of using delay(1000) you better check if 1000 millisec have gone by.

Give this (untested) code a try:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
 
#include <Wire.h>
#include "RTClib.h"

// Declarations
int led = 2;
float brightness = 0;
float fadeAmount = 0;

unsigned long prevTIme = 0;  // must be global to keep value over multiple calls of loop()
 
RTC_DS1307 RTC;
 
void setup () 
{
  Serial.begin(57600);
  Wire.begin();
  RTC.begin();
 
  if (! RTC.isrunning()) 
  {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  pinMode(led, OUTPUT);

}



void loop () 
{
  // These next 4 lines do the 1 second timing 
  unsigned long t = millis();
  if (t - prevTime >= 1000)
  {
    prevTime = t;

    DateTime now = RTC.now();
    printTime(now);
 
    unsigned long tt = now.unixtime();       // take a snapshot 

    Serial.print(" since 1970 = ");
    Serial.print(tt);
    Serial.print("s = ");
    Serial.print(tt / 86400L);
    Serial.println("d");
 
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (tt + 7 * 86400L + 30);
 
    Serial.print(" now + 7d + 30s: ");
    printTime(future);

    fadeAmount = 0;
    
    if (future.hour() == 11 && future.minute() == 35) 
    {
    fadeAmount = .14167;
    }
    else if (future.hour() == 21 && future.minute() == 0)
    {
      fadeAmount = -.14167;
    } 
    brightness = brightness + fadeAmount;
    analogWrite(led, brightness); 
  }  // end if (t - prevTime >= 1000)

}


// to prevent double code this function
printTime(DateTime dt)
{
  Serial.print(dt.year(), DEC);
  Serial.print('/');
  Serial.print(dt.month(), DEC);
  Serial.print('/');
  Serial.print(dt.day(), DEC);
  Serial.print(' ');
  Serial.print(dt.hour(), DEC);
  Serial.print(':');
  Serial.print(dt.minute(), DEC);
  Serial.print(':');
  Serial.print(dt.second(), DEC);
  Serial.println();
}