DS3231 issues

I’m trying to get my Arduino to communicate with a DS3231 RTC, but am running into an issue.
When I upload my sketch:

#include <Wire.h>
#include <SPI.h>
#include <RTClib.h>
void setup () {
  RTC.adjust(DateTime(__DATE__, __TIME__));
  if (! RTC.isrunning())
    Serial.println("RTC is NOT running!");

byte lastSec=0;
void loop () 
  DateTime now = RTC.now();
    Serial.print(now.year(), DEC);
    Serial.print(now.month(), DEC);
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(now.minute(), DEC);
    Serial.print(now.second(), DEC);

and check the serial monitor, it reports the time correctly. However when I unplug the USB from the Arduino (Still supplied with power via power jack) and then plug it back in sometime later and open the serial monitor (without having uploaded the sketch again, it prints out what the time WAS when I first uploaded the sketch, and starts reporting the time starting from then.
I’m very new to Arduino, and feel like I may be missing something obvious.
Any help is greatly appreciated!

 RTC.adjust(DateTime(__DATE__, __TIME__));

What this line of code does is to set the current time within the RTC to the date and time the sketch was compiled. Usually the download and start of the running of the code is very shortly after the time of the compile.

Once the DS3231 is set, it is very accurate and should not need to be reset. You can then comment this line out of the code.

When you open the serial monitor it restarts (resets) the code without recompiling, and the program follows the instruction to set the current time in the RTC to when the program was last compiled. Once the line is commented out of the code, you can open and close the serial monitor and the current time will not be reset backwards to the time of compile.

Thank you so much! Works perfectly now!