As @thelatemail stated, it is difficult to deal with ambiguous date formats. You have the worst here: a combination of (North American) month-day-year along with (rest-of-the work) day-month-year.
Now, the anytime package helps here in general as it allows us to parse without requiring explicit formats while also allowing different input formats in the same string.
However, it too must retain some sanity -- and hence does not support mixing d/m/y and m/d/y as you do here by default because there is just no way to automate this.
But here we can just opt to add a single missing format, and all is well:
R> library(anytime)
R> anytime::addFormats("%d-%m-%Y %H:%M:%S") # add a day-month-year variant
R> anytime(c("7/12/2015 15:28", "18-04-2016 18:20"))
[1] "2015-07-12 15:28:00 CDT" "2016-04-18 18:20:00 CDT"
R>
And with that, the difference is a simple
R> diff(anytime(c("7/12/2015 15:28", "18-04-2016 18:20")))
Time difference of 281.119 days
R>