common: Implement Time::fmt_date().
[gps-watch.git] / src / common / time.rs
index 0413c5880d06f2fea126d084eb88a7f518a9bc84..de41e35969c84e8c800315f6b4212fea085433f4 100644 (file)
@@ -24,6 +24,8 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
+use fmt::{fmt_u32, fmt_u32_pad};
+
 pub struct Time {
     seconds: i32,
     minutes: i32,
@@ -115,4 +117,32 @@ impl Time {
             })
         }
     }
+
+    pub fn fmt_date(&self, s: &mut [u8]) {
+        let mut offset = 0;
+
+        offset += fmt_u32(&mut s[offset..], self.year as u32 + 1900);
+        s[offset] = b'-';
+        offset += 1;
+
+        offset += fmt_u32_pad(&mut s[offset..], self.month as u32 + 1, 2, b'0');
+        s[offset] = b'-';
+        offset += 1;
+
+        fmt_u32_pad(&mut s[offset..], self.day as u32, 2, b'0');
+    }
+
+    pub fn fmt_time(&self, s: &mut [u8]) {
+        let mut offset = 0;
+
+        offset += fmt_u32_pad(&mut s[offset..], self.hours as u32, 2, b'0');
+        s[offset] = b':';
+        offset += 1;
+
+        offset += fmt_u32_pad(&mut s[offset..], self.minutes as u32, 2, b'0');
+        s[offset] = b':';
+        offset += 1;
+
+        fmt_u32_pad(&mut s[offset..], self.seconds as u32, 2, b'0');
+    }
 }