0
\$\begingroup\$

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'; } 
\$\endgroup\$
2
  • \$\begingroup\$is the js code under your control?\$\endgroup\$CommentedDec 31, 2020 at 10:01
  • \$\begingroup\$No. we are using the service of somebody else.\$\endgroup\$
    – Arab
    CommentedDec 31, 2020 at 10:08

1 Answer 1

1
\$\begingroup\$

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.

\$\endgroup\$

    Start asking to get answers

    Find the answer to your question by asking.

    Ask question

    Explore related questions

    See similar questions with these tags.