@@ -52,6 +52,12 @@ impl Timestamp {
52
52
pub fn seconds ( & self ) -> u64 {
53
53
self . 0 . u64 ( ) / 1_000_000_000
54
54
}
55
+
56
+ /// Returns seconds since epoch (truncate nanoseconds)
57
+ #[ inline]
58
+ pub fn subsec_nanos ( & self ) -> u64 {
59
+ self . 0 . u64 ( ) % 1_000_000_000
60
+ }
55
61
}
56
62
57
63
impl fmt:: Display for Timestamp {
@@ -136,6 +142,8 @@ mod tests {
136
142
assert_eq ! ( sum. nanos( ) , 123 ) ;
137
143
let sum = Timestamp :: from_nanos ( 0 ) ;
138
144
assert_eq ! ( sum. nanos( ) , 0 ) ;
145
+ let sum = Timestamp :: from_nanos ( 987654321000 ) ;
146
+ assert_eq ! ( sum. nanos( ) , 987654321000 ) ;
139
147
}
140
148
141
149
#[ test]
@@ -146,6 +154,14 @@ mod tests {
146
154
assert_eq ! ( sum. seconds( ) , 1234567 ) ;
147
155
}
148
156
157
+ #[ test]
158
+ fn timestamp_subsec_nanos ( ) {
159
+ let sum = Timestamp :: from_nanos ( 987654321000 ) ;
160
+ assert_eq ! ( sum. subsec_nanos( ) , 654321000 ) ;
161
+ let sum = Timestamp :: from_seconds ( 1234567 ) . plus_nanos ( 8765436 ) ;
162
+ assert_eq ! ( sum. subsec_nanos( ) , 8765436 ) ;
163
+ }
164
+
149
165
#[ test]
150
166
fn timestamp_implements_display ( ) {
151
167
let embedded = format ! ( "Time: {}" , Timestamp :: from_nanos( 0 ) ) ;
0 commit comments