Please find the following scenario, I've dynamic JS date format string from API but I am looking for the best way to convert the format that accepts in PHP date format. For now, I wrote it my own way but I doubt there should be a standard solution.
JS time format: YYYY-MM-DD / YYYY/MM/DD
Need PHP format: Y-m-d / Y/m/d
I've written the solution this way, please let me know if you find something else in a better way than this.
function dateFormatStringConvert(string $format) : string
{
foreach (['-', '/'] as $operator) {
if (strpos($format, $operator) !== false) {
return implode($operator, array_map(function ($piece){
return $piece[0]=='M' || $piece[0]=='D' ? strtolower($piece[0]) : $piece[0];
}, explode($operator, $format)));
}
}
return 'm-d-Y';
}
-
\$\begingroup\$ is the js code under your control? \$\endgroup\$hjpotter92– hjpotter922020年12月31日 10:01:35 +00:00Commented Dec 31, 2020 at 10:01
-
\$\begingroup\$ No. we are using the service of somebody else. \$\endgroup\$Arab– Arab2020年12月31日 10:08:55 +00:00Commented Dec 31, 2020 at 10:08
1 Answer 1
I don't see the need to do so much dynamic work. I would establish a lookup array to access. This will be clean, direct, and easy to maintain. If the incoming format is not found, just fallback to m-d-Y
using the null coalescing operator.
private $formatLookup = [
'YYYY-MM-DD' => 'Y-m-d',
'YYYY/MM/DD' => 'Y/m/d',
];
public function dateFormatStringConvert(string $format) : string
{
return $this->formatLookup[$format] ?? 'm-d-Y';
}
With this setup, you never need to touch the processing method, you only need to maintain the lookup array.