If you have an external RTC (such as DS1307 or DS3231) hooked up properly, you don't even need the Time library. That's kind of what the RTC is for.
Think of it this way: you could keep track of time by chanting: "One potato, two potato, three potato,..." That's not very accurate. It is much better if you use a wristwatch instead. The RTC is essentially a "wristwatch" for your Arduino.
Here is a sketch I wrote, which you might find useful. What the sketch does is, it attempts to read the time from the RTC (DS3231 will work, and I think a DS1307 would also work), and it will tell you the result of the attempt: either failure or success; and if success, the time and date.
#include <Wire.h>
byte ss=0, mi=0, hh=0, wd=6, dd=1, mo=1, yy=0;
void setup()
{
 Wire.begin();
 Serial.begin(9600);
 // clear /EOSC bit
 // Sometimes necessary to ensure that the clock
 // keeps running on just battery power. Once set,
 // it shouldn't need to be reset but it's a good
 // idea to make sure.
//Â Wire.beginTransmission(0x68); // address DS3231
//Â Wire.write(0x0E); // select register
//Â Wire.write(0b00011100); // write register bitmap, bit 7 is /EOSC
//Â Wire.endTransmission();
}
void loop()
{
 // ask RTC for the time
 // send request to receive data starting at register 0
 Wire.beginTransmission(0x68); // 0x68 is DS3231 device address
 Wire.write((byte)0); // start at register 0
 Wire.endTransmission();
 Wire.requestFrom(0x68, 7); // request seven bytes (ss, mi, hh, wd, dd, mo, yy)
 // check for a reply from the RTC, and use it if we can
 if (Wire.available() >= 7) {
  // if we're here, we got a reply and it is long enough
  // so now we read the time
  ss = bcd2bin(Wire.read()); // get seconds
  mi = bcd2bin(Wire.read()); // get minutes
  hh = bcd2bin(Wire.read()); // get hours
  wd = bcd2bin(Wire.read());
  dd = bcd2bin(Wire.read());
  mo = bcd2bin(Wire.read());
  yy = bcd2bin(Wire.read());
  // show that we successfully got the time
  Serial.print("Got the time: ");
  printTime();
 }
 else {
  // if we're here, that means we were unable to read the time
  Serial.println("Unable to read time from RTC");
 }
 delay(500);
}
byte bcd2bin(byte x) {
 // converts from binary-coded decimal to a "regular" binary number
 return ((((x >> 4) & 0xF) * 10) + (x & 0xF)) ;
}
void printTime() {
 // just like it says on the tin
 Serial.print ("\'");
 if (yy<10) Serial.print("0"); Serial.print(yy,DEC); Serial.print("-");
 if (mo<10) Serial.print("0"); Serial.print(mo,DEC); Serial.print("-");
 if (dd<10) Serial.print("0"); Serial.print(dd,DEC); Serial.print("(");
 switch (wd) {
  case 1: Serial.print("Mon"); break;
  case 2: Serial.print("Tue"); break;
  case 3: Serial.print("Wed"); break;
  case 4: Serial.print("Thu"); break;
  case 5: Serial.print("Fri"); break;
  case 6: Serial.print("Sat"); break;
  case 7: Serial.print("Sun"); break;
  default: Serial.print("Bad");Â
 }
 Serial.print(") ");
 if (hh<10) Serial.print("0"); Serial.print(hh,DEC); Serial.print(":");
 if (mi<10) Serial.print("0"); Serial.print(mi,DEC); Serial.print(":");
 if (ss<10) Serial.print("0"); Serial.print(ss,DEC); Serial.println("");
}