Strange behavior from date stamps in ls

I was looking at the file listing here. I am using ls. For dates that happened in 2025 why does it sometimes show 2025 and other times show the time?

-rw-rw-r--. 1 user1 group1 12924768 Apr 1 2025 /job1
-rw-rw-r--. 1 user1 group1 13041824 May 1 2025 /job2
-rw-rw-r--. 1 user1 group1 13181324 Jun 1 01:30 /job3
-rw-rw-r--. 1 user1 group1 13465284 Jul 1 01:30 /job4
-rw-rw-r--. 1 user1 group1 14110456 Nov 6 12:40 /job5

This is the long format in Unix and Linux.
The Solaris man page says:

If the time of last modification is greater than six months ago, it is shown in the format month date year' for the POSIX locale. When the LC_TIME locale category is not set to the POSIX locale, a different format of the time field can be used. Files modified within six months show month date time'.

The Linux/GNU/core-utils man page does not tell what 'long' is.

In Linux, this gets way more complicated.

(1) The ls command itself has three predefined ISO options to –time_style, plus an option to use a style from your LOCALE.

(2) A fourth option to define a style using the format codes from date, or to define two such styles, one for recent files and the other for older files.

(3) Or you can globally declare an environment variable TIME_STYLE similar to (2), but avoiding the need to add that to every ls command.

Non-obvious, but if you want to specify dual styles, you need a single +, a hard newline, and both formats need to be in the date style:

$ D_FMT=$'+%F\x0A%F %T.%N'
$ ls -ltr --time-style="${D_FMT}"

or:

$ export TIME_STYLE=$'+%F\x0A%F %T.%N'
$ ls -ltr

You could also just declare an alias in your appropriate log-in source.

You might refer to Formatting file timestamps (GNU Coreutils 9.8)