web-dev-qa-db-fra.com

Comment obtenir la valeur d'un objet de champ de date?

l'objet datetime est

[start_time] => Array
                (
                    [0] => Array
                        (
                            [value] => Drupal\Core\Datetime\DrupalDateTime Object
                                (
                                    [formatTranslationCache:protected] => 
                                    [inputTimeRaw:protected] => 
                                    [inputTimeAdjusted:protected] => 
                                    [inputTimeZoneRaw:protected] => 
                                    [inputTimeZoneAdjusted:protected] => 
                                    [inputFormatRaw:protected] => 
                                    [inputFormatAdjusted:protected] => 
                                    [langcode:protected] => en
                                    [errors:protected] => Array
                                        (
                                        )

                                    [dateTimeObject:protected] => DateTime Object
                                        (
                                            [date] => 2017-03-17 02:04:03.000000
                                            [timezone_type] => 3
                                            [timezone] => UTC
                                        )

                                    [stringTranslation:protected] => 
                                )

Comment obtenir [date] => 2017-03-17 02: 04: 03.0000 ??????

J'ai essayé d'utiliser print_r($ruleContentNew[0]['start_time'][0]['value']->getValue());die; Mais cela me donne une erreur.

2
Sugandh Khanna

Essayer

$ node-> get ('start_time') -> getValue ();

Cela vous donne en fait un tableau, si vous inspectez/videz le tableau, vous verrez que vous pouvez obtenir la valeur comme ceci.

$node->get('start_time')->getValue()[0]['value'];

Alternativement, vous pouvez simplement utiliser $node->start_time->value;

Remarque: J'utilise le champ Date par défaut de Core et en supposant que vous utilisez un nœud. D'où le $node, et il convient également de noter que le nom de votre machine de datation sera généralement field_something. Ce qui me fait croire que OPer utilise un module contrib ou personnalisé.

Si vous utilisez un module contrib qui vous permet d'avoir des heures de début et de fin sur votre champ de date, il faudra probablement une solution diff.

7
No Sssweat

Essayer

$node->start_time->value;

ou si c'est multi valeur

$values = $node->get('start_time')->getValue();
2
Yusef