You can make a new rounded date column in the second data set, rounding each datetime to the nearest 30 minutes, and then use that column when joining the data to the first data set.
library(lubridate)
DF <- data.frame(Datetime = c("15/08/2016 08:31", "15/08/2016 08:34",
"15/08/2016 08:38", "15/08/2016 08:41", "15/08/2016 08:44",
"15/08/2016 08:48"))
DF$Datetime <- dmy_hm(DF$Datetime) #convert to numeric time
DF$RndDate <- round_date(DF$Datetime, unit = "30 minutes")
DF
#> Datetime RndDate
#> 1 2016-08-15 08:31:00 2016-08-15 08:30:00
#> 2 2016-08-15 08:34:00 2016-08-15 08:30:00
#> 3 2016-08-15 08:38:00 2016-08-15 08:30:00
#> 4 2016-08-15 08:41:00 2016-08-15 08:30:00
#> 5 2016-08-15 08:44:00 2016-08-15 08:30:00
#> 6 2016-08-15 08:48:00 2016-08-15 09:00:00
Created on 2020-11-10 by the reprex package (v0.3.0)