I've tried out some equivalent picture values on https://try.jsonata.org/ with:
$fromMillis($millis(), "[h]:[m01] [Pn]") which also returns "10:17 am" (Correct)
$fromMillis($millis(), "[h]:[m01] [PN]") which returns "10:17 am" (I believe this is incorrect and should be "10:17 AM")
Originally raised in base JSONATA https://github.com/jsonata-js/jsonata/issues/574 and fixed in PR https://github.com/jsonata-js/jsonata/pull/644
I'm trying to format a timestamp with the AM/PM marker in uppercase with $fromMillis(). Looking at the JSONata doc https://docs.jsonata.org/date-time-functions#frommillis which points to https://www.w3.org/TR/xpath-functions-31/#date-picture-string I can see some examples with [PN] for upper case (3:58 PM format-time($t, "[h]:[m01] [PN]", "en", (), ()) ) and [Pn] for lower case (3:58:45 pm format-time($t, "[h]:[m01]:[s01] [Pn]", "en", (), ()).
I've tried out some equivalent picture values on https://try.jsonata.org/ with: $fromMillis($millis(), "[h]:[m01] [Pn]") which also returns "10:17 am" (Correct) $fromMillis($millis(), "[h]:[m01] [PN]") which returns "10:17 am" (I believe this is incorrect and should be "10:17 AM")