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();
}