This refers to both the Time on Page metric, and the average Session Duration metric.
Google Analytics cannot measure how long a visitor has actually spent looking at a page, they measure it by taking note of when a visitor came to a page (your landing page), and then update it at the time that they click onto the next page. This means if you have a single page offer, or the visitor doesn't click to the next page on your site, you will see a 0 in the metrics. Now obviously this means that the visitor could have actually spent several minutes (or even hours) on your landing page, but if they close it without clicking onto the next page (if there is one), then you will see a session time of 0.
Furthermore the way it seems to be measured for the average across the traffic, is that these "0" second visitors are not including in the average. So if just 1 visitor clicks through, and his real time on page is recorded as 20 seconds, then if you had 10 other visitors, none of whom clicked on the next link, you would still see the average as 20.
If your landing page requires a click to an external link it is possible to setup Google Analytics to track this as an interaction, but it will require enabling through code or a plugin on your website. This should then mean Google Analytics will track how long the visitor spent on the page *if* they follow an external link to leave it.
Measuring time on page: https://help.analyticsedge.com/googleanalytics/measuring-time-on-bounce-page/