@@ -42,14 +42,21 @@ impl Timestamp {
42
42
}
43
43
44
44
/// Returns nanoseconds since epoch
45
+ #[ inline]
45
46
pub fn nanos ( & self ) -> u64 {
46
47
self . 0 . u64 ( )
47
48
}
49
+
50
+ /// Returns seconds since epoch (truncate nanoseconds)
51
+ #[ inline]
52
+ pub fn seconds ( & self ) -> u64 {
53
+ self . 0 . u64 ( ) / 1_000_000_000
54
+ }
48
55
}
49
56
50
57
impl fmt:: Display for Timestamp {
51
58
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
52
- let whole = self . nanos ( ) / 1_000_000_000 ;
59
+ let whole = self . seconds ( ) ;
53
60
let fractional = self . nanos ( ) % 1_000_000_000 ;
54
61
write ! ( f, "{}.{:09}" , whole, fractional)
55
62
}
@@ -131,6 +138,14 @@ mod tests {
131
138
assert_eq ! ( sum. nanos( ) , 0 ) ;
132
139
}
133
140
141
+ #[ test]
142
+ fn timestamp_seconds ( ) {
143
+ let sum = Timestamp :: from_nanos ( 987654321000 ) ;
144
+ assert_eq ! ( sum. seconds( ) , 987 ) ;
145
+ let sum = Timestamp :: from_seconds ( 1234567 ) . plus_nanos ( 8765436 ) ;
146
+ assert_eq ! ( sum. seconds( ) , 1234567 ) ;
147
+ }
148
+
134
149
#[ test]
135
150
fn timestamp_implements_display ( ) {
136
151
let embedded = format ! ( "Time: {}" , Timestamp :: from_nanos( 0 ) ) ;
0 commit comments