Here’s what solved it for me on both the product details and the product listing views.
Problem observed:
The “available from” notice was shown, but only with the date (no hours/minutes). The reason was that the view used the date_format parameter (default %d %B %Y) which doesn’t include time.
Product details view
File adjusted (override): product/quantity.php
(That’s the file you referenced; I confirmed it on my setup.)
I kept the original condition and only made the format time-aware. If the chosen date_format doesn’t contain hours/minutes, I append %H:%M:
<!-- SALE START MESSAGE -->
<?php
// $start_date kommt aus der Detail-View
$startTs = is_numeric($start_date) ? (int)$start_date : strtotime((string)$start_date);
if ($startTs && $startTs > time()) :
// Format aus Params holen; Uhrzeit ergänzen, falls nicht vorhanden
$fmt = (string) $this->params->get('date_format', '%d %B %Y');
if (strpos($fmt, '%H') === false && strpos($fmt, '%I') === false) {
$fmt .= ' %H:%M';
}
?>
<span class="hikashop_product_sale_start">
<?php echo JText::sprintf('ITEM_SOLD_ON_DATE', hikashop_getDate($startTs, $fmt)); ?>
</span>
<?php endif; ?>
<!-- EO SALE START MESSAGE -->
Product listing view
On my site the text is rendered not in listing_* files but in:
File adjusted (override): product/add_to_cart_ajax.php
(That’s where the listing replaces the add-to-cart area with the “available from …” notice before the sale starts.)
Same idea—keep the logic, enforce a time-aware format:
<!-- SALE START MESSAGE -->
<?php
$startTs = is_numeric($start_date) ? (int)$start_date : strtotime((string)$start_date);
if ($startTs && $startTs > time()) :
// Format holen; Uhrzeit anhängen, falls nicht vorhanden
$fmt = (string) $this->params->get('date_format', '%d %B %Y');
if (strpos($fmt, '%H') === false && strpos($fmt, '%I') === false) {
$fmt .= ' %H:%M';
}
?>
<span class="hikashop_product_sale_start">
<?php echo JText::sprintf('ITEM_SOLD_ON_DATE', hikashop_getDate($startTs, $fmt)); ?>
</span>
<?php endif; ?>
<!-- EO SALE START MESSAGE -->
Notes / gotchas
If your product_sale_start is stored without a time component, you’ll see … 00:00. If you want a fixed time (e.g. 08:00) whenever hours/minutes are zero, you can add a small check and adjust the timestamp before formatting.
Make sure there is no translation override removing the %s in ITEM_SOLD_ON_DATE, and clear Joomla cache (and any optimizer/minifier cache) after changes.
With the above two edits, both the detail page and listing now display date + time reliably.