This is the usual construction, I believe:
for /F %i in ('time /t') do set current_time=%i
(as usual, the percent signs need to be doubled in a command script.)
Another construction, though awkward:
time /t > tempfile.txt
set /p current_time= < tempfile.txt
There appears to be no way to avoid the temporary file; if you use a pipe, the set command happens in a subprocess. (In some situations you might be able to pipe the output to a second copy of your batch script, but that sort of thing can get ugly fast.)
To expand on my last point, in response to a question in the comments, here is an example batch file which pipes output into a new instance of itself:
if "%1" NEQ "" @goto %1
time /t | %0 step2
set /p current_time=
rem processing here...
I don't think this solution scales well for more complicated batch scripts.