diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 4ad6a72..49d061e 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -412,6 +412,7 @@
         "//third_party:guava",
         "//third_party:jsr305",
         "@com_google_protobuf//:protobuf_java",
+        "@com_google_protobuf//java/util",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index e41e289..b094844 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -451,6 +451,7 @@
         "//third_party:guava",
         "//third_party:jsr305",
         "//third_party/protobuf:protobuf_java",
+        "//third_party/protobuf:protobuf_java_util",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index 308622a..1b5b13e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -66,6 +66,7 @@
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.skyframe.SkyValue;
+import com.google.protobuf.util.Durations;
 import java.util.Collection;
 import java.util.function.Function;
 import javax.annotation.Nullable;
@@ -434,6 +435,7 @@
     builder.addAllOutputGroup(getOutputFilesByGroup(converters.artifactGroupNamer()));
 
     if (isTest) {
+      builder.setTestTimeout(Durations.fromSeconds(testTimeoutSeconds));
       builder.setTestTimeoutSeconds(testTimeoutSeconds);
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestAttempt.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestAttempt.java
index bdc834b..84e0d1f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestAttempt.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestAttempt.java
@@ -32,6 +32,8 @@
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
+import com.google.protobuf.util.Durations;
+import com.google.protobuf.util.Timestamps;
 import java.util.Collection;
 import java.util.List;
 
@@ -219,7 +221,9 @@
     builder.setStatusDetails(statusDetails);
     builder.setExecutionInfo(executionInfo);
     builder.setCachedLocally(cachedLocally);
+    builder.setTestAttemptStart(Timestamps.fromMillis(startTimeMillis));
     builder.setTestAttemptStartMillisEpoch(startTimeMillis);
+    builder.setTestAttemptDuration(Durations.fromMillis(durationMillis));
     builder.setTestAttemptDurationMillis(durationMillis);
     builder.addAllWarning(testWarnings);
     for (Pair<String, Path> file : files) {
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
index e7f4606..e646158 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BUILD
@@ -31,6 +31,7 @@
         "//third_party:jsr305",
         "//third_party:netty",
         "//third_party/protobuf:protobuf_java",
+        "//third_party/protobuf:protobuf_java_util",
     ],
 )
 
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java
index dd887e0..39d948a 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildCompletingEvent.java
@@ -17,6 +17,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId;
 import com.google.devtools.build.lib.util.ExitCode;
+import com.google.protobuf.util.Timestamps;
 import java.util.Collection;
 
 /**
@@ -80,6 +81,7 @@
         BuildEventStreamProtos.BuildFinished.newBuilder()
             .setOverallSuccess(ExitCode.SUCCESS.equals(exitCode))
             .setExitCode(protoExitCode)
+            .setFinishTime(Timestamps.fromMillis(finishTimeMillis))
             .setFinishTimeMillis(finishTimeMillis)
             .setAnomalyReport(protoAnamolyReport)
             .build();
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
index 118b30c..313dccb 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
@@ -29,5 +29,7 @@
         "//src/main/protobuf:command_line_proto",
         "//src/main/protobuf:failure_details_proto",
         "//src/main/protobuf:invocation_policy_proto",
+        "@com_google_protobuf//:duration_proto",
+        "@com_google_protobuf//:timestamp_proto",
     ],
 )
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
index 21c93a6..48a00fb 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
@@ -16,6 +16,8 @@
 
 package build_event_stream;
 
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
 import "src/main/protobuf/command_line.proto";
 import "src/main/protobuf/failure_details.proto";
 import "src/main/protobuf/invocation_policy.proto";
@@ -321,9 +323,14 @@
   string uuid = 1;
 
   // Start of the build in ms since the epoch.
-  // TODO(buchgr): Use google.protobuf.TimeStamp once bazel's protoc supports
-  // it.
-  int64 start_time_millis = 2;
+  //
+  // Deprecated, use `start_time` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 start_time_millis = 2 [deprecated = true];
+
+  // Start of the build.
+  google.protobuf.Timestamp start_time = 9;
 
   // Version of the build tool that is running.
   string build_tool_version = 3;
@@ -575,7 +582,14 @@
   repeated string tag = 3;
 
   // The timeout specified for test actions under this configured target.
-  int64 test_timeout_seconds = 7;
+  //
+  // Deprecated, use `test_timeout` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 test_timeout_seconds = 7 [deprecated = true];
+
+  // The timeout specified for test actions under this configured target.
+  google.protobuf.Duration test_timeout = 10;
 
   // Failure information about the target, only populated if success is false,
   // and sometimes not even then. Equal to one of the ActionExecuted
@@ -612,11 +626,28 @@
   // Time in milliseconds since the epoch at which the test attempt was started.
   // Note: for cached test results, this is time can be before the start of the
   // build.
-  int64 test_attempt_start_millis_epoch = 6;
+  //
+  // Deprecated, use `test_attempt_start` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 test_attempt_start_millis_epoch = 6 [deprecated = true];
+
+  // Time at which the test attempt was started.
+  // Note: for cached test results, this is time can be before the start of the
+  // build.
+  google.protobuf.Timestamp test_attempt_start = 10;
 
   // Time the test took to run. For locally cached results, this is the time
   // the cached invocation took when it was invoked.
-  int64 test_attempt_duration_millis = 3;
+  //
+  // Deprecated, use `test_attempt_duration` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 test_attempt_duration_millis = 3 [deprecated = true];
+
+  // Time the test took to run. For locally cached results, this is the time
+  // the cached invocation took when it was invoked.
+  google.protobuf.Duration test_attempt_duration = 11;
 
   // Files (logs, test.xml, undeclared outputs, etc) generated by that test
   // action.
@@ -628,7 +659,7 @@
   // Message providing optional meta data on the execution of the test action,
   // if available.
   message ExecutionInfo {
-    // Deprecated, use TargetComplete.test_timeout_seconds instead.
+    // Deprecated, use TargetComplete.test_timeout instead.
     int32 timeout_seconds = 1 [deprecated = true];
 
     // Name of the strategy to execute this test action (e.g., "local",
@@ -647,11 +678,15 @@
 
     // Represents a hierarchical timing breakdown of an activity.
     // The top level time should be the total time of the activity.
-    // Invariant: time_millis >= sum of time_millis of all direct children.
+    // Invariant: `time` >= sum of `time`s of all direct children.
     message TimingBreakdown {
       repeated TimingBreakdown child = 1;
       string name = 2;
-      int64 time_millis = 3;
+      // Deprecated, use `time` instead.
+      //
+      // TODO(yannic): Remove.
+      int64 time_millis = 3 [deprecated = true];
+      google.protobuf.Duration time = 4;
     }
     TimingBreakdown timing_breakdown = 4;
 
@@ -689,13 +724,34 @@
   int32 total_num_cached = 6;
 
   // When the test first started running.
-  int64 first_start_time_millis = 7;
+  //
+  // Deprecated, use `first_start_time` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 first_start_time_millis = 7 [deprecated = true];
+
+  // When the test first started running.
+  google.protobuf.Timestamp first_start_time = 13;
 
   // When the last test action completed.
-  int64 last_stop_time_millis = 8;
+  //
+  // Deprecated, use `last_stop_time` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 last_stop_time_millis = 8 [deprecated = true];
+
+  // When the test first started running.
+  google.protobuf.Timestamp last_stop_time = 14;
 
   // The total runtime of the test.
-  int64 total_run_duration_millis = 9;
+  //
+  // Deprecated, use `total_run` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 total_run_duration_millis = 9 [deprecated = true];
+
+  // The total runtime of the test.
+  google.protobuf.Duration total_run_duration = 12;
 }
 
 // Payload of the event summarizing a target (test or non-test).
@@ -739,10 +795,15 @@
   // ExitCode.code equals 0.
   ExitCode exit_code = 3;
 
-  // Time in milliseconds since the epoch.
-  // TODO(buchgr): Use google.protobuf.Timestamp once bazel's protoc supports
-  // it.
-  int64 finish_time_millis = 2;
+  // End of the build in ms since the epoch.
+  //
+  // Deprecated, use `finish_time` instead.
+  //
+  // TODO(yannic): Remove.
+  int64 finish_time_millis = 2 [deprecated = true];
+
+  // End of the build.
+  google.protobuf.Timestamp finish_time = 5;
 
   AnomalyReport anomaly_report = 4;
 }
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
index b62ebc3..6cd8ff7 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/BuildStartingEvent.java
@@ -27,6 +27,7 @@
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.runtime.CommandLineEvent;
 import com.google.devtools.build.lib.util.ProcessUtils;
+import com.google.protobuf.util.Timestamps;
 import java.util.Collection;
 
 /**
@@ -101,6 +102,7 @@
     BuildEventStreamProtos.BuildStarted.Builder started =
         BuildEventStreamProtos.BuildStarted.newBuilder()
             .setUuid(request.getId().toString())
+            .setStartTime(Timestamps.fromMillis(request.getStartTime()))
             .setStartTimeMillis(request.getStartTime())
             .setBuildToolVersion(BlazeVersionInfo.instance().getVersion())
             .setOptionsDescription(request.getOptionsDescription())
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
index e163227..77818ed 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
@@ -41,6 +41,8 @@
 import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.FailedTestCasesStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.TestCase;
+import com.google.protobuf.util.Durations;
+import com.google.protobuf.util.Timestamps;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -605,8 +607,11 @@
             .setTotalRunCount(totalRuns())
             .setRunCount(testParams.getRuns())
             .setShardCount(testParams.getShards())
+            .setFirstStartTime(Timestamps.fromMillis(firstStartTimeMillis))
             .setFirstStartTimeMillis(firstStartTimeMillis)
+            .setLastStopTime(Timestamps.fromMillis(lastStopTimeMillis))
             .setLastStopTimeMillis(lastStopTimeMillis)
+            .setTotalRunDuration(Durations.fromMillis(totalRunDurationMillis))
             .setTotalRunDurationMillis(totalRunDurationMillis);
     for (Path path : getFailedLogs()) {
       String uri = pathConverter.apply(path);
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index a1ff36a..939ee38 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -247,8 +247,8 @@
         "//third_party:junit4",
         "//third_party:mockito",
         "//third_party:truth",
-        "//third_party/protobuf",
         "//third_party/protobuf:protobuf_java",
+        "@com_google_protobuf//java/util",
         "@com_google_testparameterinjector//:testparameterinjector",
     ],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java b/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java
index d7cce6c..e4aae44 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java
@@ -47,6 +47,8 @@
 import com.google.devtools.build.lib.view.test.TestStatus.FailedTestCasesStatus;
 import com.google.devtools.build.lib.view.test.TestStatus.TestCase;
 import com.google.devtools.build.lib.view.test.TestStatus.TestCase.Status;
+import com.google.protobuf.util.Durations;
+import com.google.protobuf.util.Timestamps;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -277,8 +279,11 @@
             BuildEventStreamProtos.TestSummary.newBuilder()
                 .setOverallStatus(TestStatus.FAILED)
                 .setFirstStartTimeMillis(1000)
+                .setFirstStartTime(Timestamps.fromMillis(1000))
                 .setLastStopTimeMillis(1300)
+                .setLastStopTime(Timestamps.fromMillis(1300))
                 .setTotalRunDurationMillis(300)
+                .setTotalRunDuration(Durations.fromMillis(300))
                 .setRunCount(2)
                 .setShardCount(3)
                 .addPassed(BuildEventStreamProtos.File.newBuilder().setUri("/path/to/apple"))
