@@ -126,6 +126,25 @@ static HashTable* php_phongo_utcdatetime_get_properties_hash(phongo_compat_objec
126
126
return props ;
127
127
}
128
128
129
+ static void php_phongo_utcdatetime_to_php_date (zval * return_value , const zval * this , zend_class_entry * ce )
130
+ {
131
+ php_phongo_utcdatetime_t * intern ;
132
+ php_date_obj * datetime_obj ;
133
+ char * sec ;
134
+ size_t sec_len ;
135
+
136
+ intern = Z_UTCDATETIME_OBJ_P (this );
137
+
138
+ object_init_ex (return_value , ce );
139
+ datetime_obj = Z_PHPDATE_P (return_value );
140
+
141
+ sec_len = spprintf (& sec , 0 , "@%" PRId64 , intern -> milliseconds / 1000 );
142
+ php_date_initialize (datetime_obj , sec , sec_len , NULL , NULL , 0 );
143
+ efree (sec );
144
+
145
+ datetime_obj -> time -> us = (intern -> milliseconds % 1000 ) * 1000 ;
146
+ }
147
+
129
148
/* Construct a new BSON UTCDateTime type from either the current time,
130
149
milliseconds since the epoch, or a DateTimeInterface object. Defaults to the
131
150
current time. */
@@ -211,45 +230,17 @@ static PHP_METHOD(MongoDB_BSON_UTCDateTime, __toString)
211
230
/* Returns a DateTime object representing this UTCDateTime */
212
231
static PHP_METHOD (MongoDB_BSON_UTCDateTime , toDateTime )
213
232
{
214
- php_phongo_utcdatetime_t * intern ;
215
- php_date_obj * datetime_obj ;
216
- char * sec ;
217
- size_t sec_len ;
218
-
219
- intern = Z_UTCDATETIME_OBJ_P (getThis ());
220
-
221
233
PHONGO_PARSE_PARAMETERS_NONE ();
222
234
223
- object_init_ex (return_value , php_date_get_date_ce ());
224
- datetime_obj = Z_PHPDATE_P (return_value );
225
-
226
- sec_len = spprintf (& sec , 0 , "@%" PRId64 , intern -> milliseconds / 1000 );
227
- php_date_initialize (datetime_obj , sec , sec_len , NULL , NULL , 0 );
228
- efree (sec );
229
-
230
- datetime_obj -> time -> us = (intern -> milliseconds % 1000 ) * 1000 ;
235
+ php_phongo_utcdatetime_to_php_date (return_value , getThis (), php_date_get_date_ce ());
231
236
}
232
237
233
- /* Returns a DateTime object representing this UTCDateTime */
238
+ /* Returns a DateTimeImmutable object representing this UTCDateTime */
234
239
static PHP_METHOD (MongoDB_BSON_UTCDateTime , toDateTimeImmutable )
235
240
{
236
- php_phongo_utcdatetime_t * intern ;
237
- php_date_obj * datetime_obj ;
238
- char * sec ;
239
- size_t sec_len ;
240
-
241
- intern = Z_UTCDATETIME_OBJ_P (getThis ());
242
-
243
241
PHONGO_PARSE_PARAMETERS_NONE ();
244
242
245
- object_init_ex (return_value , php_date_get_immutable_ce ());
246
- datetime_obj = Z_PHPDATE_P (return_value );
247
-
248
- sec_len = spprintf (& sec , 0 , "@%" PRId64 , intern -> milliseconds / 1000 );
249
- php_date_initialize (datetime_obj , sec , sec_len , NULL , NULL , 0 );
250
- efree (sec );
251
-
252
- datetime_obj -> time -> us = (intern -> milliseconds % 1000 ) * 1000 ;
243
+ php_phongo_utcdatetime_to_php_date (return_value , getThis (), php_date_get_immutable_ce ());
253
244
}
254
245
255
246
static PHP_METHOD (MongoDB_BSON_UTCDateTime , jsonSerialize )
0 commit comments