# Read from RTC, write to RTC from datetime import datetime, timezone import pyRPiRTC def format_dt(dt): return dt.strftime('%Y.%m.%d %H:%M:%S') def utc_to_local(utc_dt): return utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None) rtc = pyRPiRTC.DS1302() # rtc = pyRPiRTC.DS1302(ce_pin=11, data_pin=12, clk_pin=13) # setup custom GPIO ports # dt_now = datetime.now() # datetime WITH timezone info dt_now = datetime.utcnow() # datetime without timezone info print('Now is (UTC)', format_dt(dt_now)) # Now is (UTC) 2018.06.09 13:29:03 rtc.write_datetime(dt_now) dt_rtc = rtc.read_datetime() # to get unix timestamp use .read_timestamp print('RTC time is:', format_dt(dt_rtc)) # RTC time is: 2018.06.09 13:29:03 print('With applied timezone info current time is:', format_dt(utc_to_local(dt_rtc)))
import sys import pyRPiRTC import time from datetime import datetime my_format = '%d/%m/%Y %H:%M:%S' rtc = pyRPiRTC.DS1302(clk_pin=11, data_pin=13, ce_pin=15) def set_date_time(time, f=my_format): global rtc dt = datetime.strptime(time, f) rtc.write_datetime(dt) print('Press CTRL + C to end the script!') try: #set_date_time(datetime.now().strftime(my_format)) # uncomment this to set date/time while True: cdt = rtc.read_datetime() print('Current date: {}'.format(cdt.strftime('%d/%m/%Y'))) print('Current time: {}\n'.format(cdt.strftime('%H:%M:%S'))) time.sleep(1) except ValueError: sys.exit('error with RTC chip, check wiring') except KeyboardInterrupt: print('\nScript end!') finally: