try this

Fork of DS1307_RTC by Joseph Bradshaw

Revision:
1:95a90bac5d6d
Parent:
0:2bbb23558624
Child:
2:a9a0784930bd
diff -r 2bbb23558624 -r 95a90bac5d6d DS1307_RTC.cpp
--- a/DS1307_RTC.cpp	Sat Oct 11 06:04:41 2014 +0000
+++ b/DS1307_RTC.cpp	Sat Nov 01 14:05:25 2014 +0000
@@ -14,6 +14,26 @@
   
     Day[0] = "";
     Day[1] = "Sun";
+    Day[2] = "Mon";
+    Day[3] = "Tue";
+    Day[4] = "Wed";
+    Day[5] = "Thu";
+    Day[6] = "Fri";
+    Day[7] = "Sat";
+    
+    Mon[0] = "";
+    Mon[1] = "Jan";
+    Mon[2] = "Feb";
+    Mon[3] = "Mar";
+    Mon[4] = "Apr";
+    Mon[5] = "May";
+    Mon[6] = "Jun";
+    Mon[7] = "Jul";
+    Mon[8] = "Aug";
+    Mon[9] = "Sep";
+    Mon[10] = "Oct";
+    Mon[11] = "Nov";
+    Mon[12] = "Dec";
        
     rtc_sec = 0;
     rtc_minute = 0;
@@ -94,6 +114,24 @@
     RTC_write_reg(0, bcd(rtc_sec));     //seconds reg
 }
 
+void DS1307_RTC::set_RTC_time_UTC(float utc_time, int timezone){
+    int Hour = (int)((int)utc_time/10000) + timezone;
+    if(Hour < 0)
+        Hour += 24;
+    
+    int Min = (int)((int)utc_time/100%100);
+    int Sec = (int)utc_time % 100;
+            
+/*    RTC_write_reg(6, bcd(rtc_year));    //seconds reg
+    RTC_write_reg(5, bcd(rtc_month));   //month reg
+    RTC_write_reg(3, bcd(rtc_day));   //day reg
+    RTC_write_reg(4, bcd(rtc_date));   //date reg*/
+    
+    RTC_write_reg(2, bcd(Hour));   //hour reg    
+    RTC_write_reg(1, bcd(Min));   //minute reg
+    RTC_write_reg(0, bcd(Sec));     //seconds reg    
+}
+
 void DS1307_RTC::get_RTC_time(char *str)
 {   
     rtc_sec = unbcd(RTC_read_reg(0));    //