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

answered Jan 1, 2021 at 6:41
\$\endgroup\$

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.