diff --git a/folly/io/async/test/TimeUtil.cpp b/folly/io/async/test/TimeUtil.cpp
index 8103fcc5c3790358a7c6f5b1b1f4bbc78e0695b3..6db4964bee9964008eea1ac2efb81657759f18cf 100644
--- a/folly/io/async/test/TimeUtil.cpp
+++ b/folly/io/async/test/TimeUtil.cpp
@@ -22,22 +22,31 @@
 #include <folly/Conv.h>
 #include <folly/portability/SysSyscall.h>
 #include <folly/portability/Unistd.h>
+#include <folly/portability/Windows.h>
 
 #include <chrono>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <sys/utsname.h>
 #include <errno.h>
 #include <glog/logging.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdexcept>
 
+#ifndef _MSC_VER
+#include <sys/utsname.h>
+#endif
+
 using std::string;
 using namespace std::chrono;
 
 namespace folly {
 
+#ifdef _MSC_VER
+static pid_t gettid() {
+  return pid_t(GetCurrentThreadId());
+}
+#else
 /**
  * glibc doesn't provide gettid(), so define it ourselves.
  */
@@ -105,6 +114,7 @@ static int64_t determineJiffiesHZ() {
 
   return hz;
 }
+#endif
 
 /**
  * Determine how long this process has spent waiting to get scheduled on the
@@ -114,6 +124,9 @@ static int64_t determineJiffiesHZ() {
  * time cannot be determined.
  */
 static milliseconds getTimeWaitingMS(pid_t tid) {
+#ifdef _MSC_VER
+  return milliseconds(0);
+#else
   static int64_t jiffiesHZ = 0;
   if (jiffiesHZ == 0) {
     jiffiesHZ = determineJiffiesHZ();
@@ -168,6 +181,7 @@ static milliseconds getTimeWaitingMS(pid_t tid) {
     LOG(ERROR) << "error determining process wait time: %s" << e.what();
     return milliseconds(0);
   }
+#endif
 }
 
 void TimePoint::reset() {