@@ -177,12 +177,12 @@ public function date($date = null, $locale = null, $useTimezone = true, $include
177
177
$ timeType = $ includeTime ? \IntlDateFormatter::SHORT : \IntlDateFormatter::NONE ;
178
178
$ formatter = new \IntlDateFormatter (
179
179
$ locale ,
180
- \IntlDateFormatter::SHORT ,
180
+ \IntlDateFormatter::MEDIUM ,
181
181
$ timeType ,
182
182
new \DateTimeZone ($ timezone )
183
183
);
184
184
185
- $ date = $ this ->appendTimeIfNeeded ($ date , $ includeTime );
185
+ $ date = $ this ->appendTimeIfNeeded ($ date , $ includeTime, $ timezone , $ locale );
186
186
$ date = $ formatter ->parse ($ date ) ?: (new \DateTime ($ date ))->getTimestamp ();
187
187
break ;
188
188
}
@@ -347,16 +347,44 @@ public function convertConfigTimeToUtc($date, $format = 'Y-m-d H:i:s')
347
347
}
348
348
349
349
/**
350
- * Retrieve date with time
350
+ * Append time to DateTime
351
351
*
352
352
* @param string $date
353
- * @param bool $includeTime
353
+ * @param boolean $includeTime
354
+ * @param string $timezone
355
+ * @param string $locale
354
356
* @return string
357
+ * @throws LocalizedException
355
358
*/
356
- private function appendTimeIfNeeded ($ date , $ includeTime )
359
+ private function appendTimeIfNeeded ($ date , $ includeTime, $ timezone , $ locale )
357
360
{
358
361
if ($ includeTime && !preg_match ('/\d{1}:\d{2}/ ' , $ date )) {
359
- $ date .= " 0:00am " ;
362
+
363
+ $ formatterWithoutHour = new \IntlDateFormatter (
364
+ $ locale ,
365
+ \IntlDateFormatter::MEDIUM ,
366
+ \IntlDateFormatter::NONE ,
367
+ new \DateTimeZone ($ timezone )
368
+ );
369
+ $ convertedDate = $ formatterWithoutHour ->parse ($ date );
370
+
371
+ if (!$ convertedDate ) {
372
+ throw new LocalizedException (
373
+ new Phrase (
374
+ 'Could not append time to DateTime '
375
+ )
376
+ );
377
+
378
+ }
379
+
380
+ $ formatterWithHour = new \IntlDateFormatter (
381
+ $ locale ,
382
+ \IntlDateFormatter::MEDIUM ,
383
+ \IntlDateFormatter::SHORT ,
384
+ new \DateTimeZone ($ timezone )
385
+ );
386
+
387
+ $ date = $ formatterWithHour ->format ($ convertedDate );
360
388
}
361
389
return $ date ;
362
390
}
0 commit comments