How to get job start time inside of a TSQL agent job step? Is there a good way to query the job start time inside of a given sql agent job step (TSQL)?  This will help with step 3 in the following scenario.
Job Foo (Run Daily @ 11:30pm)
Step1 - StartTime = Saturday 11:30pm TSQL - (15 minute duration)
Step2 - StartTime = Saturday 11:45pm TSQL - (30 minute duration)
Step3 - StartTime = Sunday   12:15am TSQL - Exit early / don't run unless Foo job was started on a Saturday.
There is a lot of information about the jobs and SQL Server Agent in msdb.
You can check it out below, I added a few columns that help you in your thoughts. Maybe you want to check If this job success or not (in the message column).
SELECT  JobName = sj.name,
        StepName = jh.step_name,
        RunDateTime = msdb.dbo.agent_datetime(run_date, run_time),
        EndDateTime = DATEADD(SECOND, run_duration / 10000 * 3600 + run_duration % 10000 / 100 * 60 + run_duration % 100, msdb.dbo.agent_datetime(jh.run_date, jh.run_time)),
        jh.message
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory jh ON sj.job_id = jh.job_id
where step_id=0

For the comment: There is no clearly answered yet about that. So, you should try it.
Microsoft says;

In most cases the data is updated only after the job step completes
and the table typically contains no records for job steps that are
currently in progress, but in some cases underlying processes do
provide information about in progress job steps.