Skip to content

Commit 2fca380

Browse files
authored
Merge pull request #16319 from Michaelin007/proto
Convert Google Protocol Buffer Timestamp to LocalDate
2 parents ae5290f + 783795b commit 2fca380

3 files changed

Lines changed: 62 additions & 0 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.baeldung.protobuftimestamptolocaldate;
2+
3+
import com.google.protobuf.Timestamp;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
7+
import java.time.Instant;
8+
9+
public class TimestampInstance {
10+
11+
private static final Logger logger = LoggerFactory.getLogger(TimestampInstance.class);
12+
13+
public static void main(String[] args) {
14+
Instant currentTimestamp = Instant.now();
15+
Timestamp timestamp = Timestamp.newBuilder()
16+
.setSeconds(currentTimestamp.getEpochSecond())
17+
.setNanos(currentTimestamp.getNano())
18+
.build();
19+
logger.info(timestamp.toString());
20+
}
21+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.baeldung.protobuftimestamptolocaldate;
2+
3+
import com.google.protobuf.Timestamp;
4+
5+
import java.time.Instant;
6+
import java.time.LocalDate;
7+
import java.time.ZoneId;
8+
9+
public class TimestampToLocalDate {
10+
11+
public static LocalDate convertToLocalDate(Timestamp timestamp) {
12+
Instant instant = Instant.ofEpochSecond(timestamp.getSeconds(), timestamp.getNanos());
13+
LocalDate time = instant.atZone(ZoneId.of("America/Montreal"))
14+
.toLocalDate();
15+
return time;
16+
17+
}
18+
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.protobuftimestamptolocaldate;
2+
3+
import com.google.protobuf.Timestamp;
4+
import org.junit.Test;
5+
6+
import java.time.LocalDate;
7+
8+
import static org.junit.Assert.assertEquals;
9+
10+
public class TimestampToLocalDateUnitTest {
11+
12+
@Test
13+
public void givenTimestamp_whenConvertedToLocalDate_thenSuccess() {
14+
Timestamp timestamp = Timestamp.newBuilder()
15+
.setSeconds(1000000000)
16+
.setNanos(778866000)
17+
.build();
18+
LocalDate time = TimestampToLocalDate.convertToLocalDate(timestamp);
19+
assertEquals(LocalDate.of(2001, 9, 8), time);
20+
}
21+
22+
}

0 commit comments

Comments
 (0)