L'utilisation de la classe JDate est décrite dans ce document : https://docs.joomla.org/How_to_use_JDate/fr

Toutefois voici quelques précision.

$JDateCourante = Factory::getDate('now');
$JDateCourante = new JDate('now');
$JDateCourant = JDate::getInstance('now');
sont identiques

Notion de zone horaire

Quand on instancie la classe, on peu choisir d'y stocker la date en UTC :

$JDateCouranteUTC = Factory::getDate('now');

Ou selon l'heure locale du serveur :

$config = Factory::getConfig();
$offset = $config->get('offset');
$JDateCouranteLocale = Factory::getDate('now',$offset);

En cas de comparaison :

$JDateCouranteUTC == $JDateCouranteLocale

Dans la classe, la notion de timezone sera retenue.

Si l'on veut afficher la date à l'heure locale du serveur il faudra donc faire soit :
$config = Factory::getConfig();
$offset = $config->get('offset');
$JDateCourante = Factory::getDate('now',$offset);
$ddate = $JDateCourante->format('d-m-Y H:i:s',true);

Soit définir la zone puis afficher :
$config = Factory::getConfig();
$offset = $config->get('offset');
$timezone = new DateTimeZone($offset);
$JDateCourante = Factory::getDate('now');
$JDateCourante->setTimezone($timezone);
$ddate = $JDateCourante->format('d-m-Y H:i:s',true);

 Calcul sur les dates

On peut bien sur effectuer des calcul sur les dates, voici un exemple :

$config = Factory::getConfig();
$offset = $config->get('offset');
$JDateCourante = newDate('now',$offset);
...
$JDateCalculee = new Jdate($JDateCourante->format('Y-m-d H:i',true),$offset); // sans les secondes
$JDateCalculee->modify('+2 days -3 hours +10 minutes');