code: protected static long getTime() {
          // Initialization
          if (deviceDateToServerDateUncertainty == Long.MAX_VALUE) {
              deviceDateToServerDateUncertainty = WonderPushConfiguration.getDeviceDateSyncUncertainty();
              deviceDateToServerDateOffset = WonderPushConfiguration.getDeviceDateSyncOffset();
          }
          long currentTimeMillis = System.currentTimeMillis();
          long elapsedRealtime = SystemClock.elapsedRealtime();
          long startupToDeviceOffset = currentTimeMillis - elapsedRealtime;
          if (startupDateToDeviceDateOffset == Long.MAX_VALUE) {
              startupDateToDeviceDateOffset = startupToDeviceOffset;
          }
  
          // Check device date consistency with startup date
          if (Math.abs(startupToDeviceOffset - startupDateToDeviceDateOffset) > 1000) {
              // System time has jumped (by at least 1 second), or has drifted with regards to elapsedRealtime.
              // Apply the offset difference to resynchronize the "device" sync offset onto the new system date.
              deviceDateToServerDateOffset -= startupToDeviceOffset - startupDateToDeviceDateOffset;
              WonderPushConfiguration.setDeviceDateSyncOffset(deviceDateToServerDateOffset);
              startupDateToDeviceDateOffset = startupToDeviceOffset;
          }
  
          if (startupDateToServerDateUncertainty <= deviceDateToServerDateUncertainty
                  // Don't use the startup date if it has not been synced, use and trust last device date sync
                  && startupDateToServerDateUncertainty != Long.MAX_VALUE) {
              return elapsedRealtime + startupDateToServerDateOffset;
          } else {
              return currentTimeMillis + deviceDateToServerDateOffset;
          }
      }
docs: Get the current timestamp in milliseconds, UTC.
  @return A timestamp in milliseconds