Description
Description
I'm porting a .NET FW application to .NET (6 and above).
The application performs an XML to HTML conversion using an XSLT transform via System.Xml.Xsl.XslCompiledTransform.
Under .NET FW, this XSL line:
<xsl:value-of select="ms:format-date('2001-02-03T01:02:03', '')"/>
Produces:
03/02/2001
UK date format since that's my locale.
However, under .NET 6 (I've also tried 8), it produces:
03/02/2001 01:02:03
Similarly, the format-time function also outputs both the date & time.
Reproduction Steps
It's easy to see there's a problem from the identified source code.
Expected behavior
The default (empty) format string should cause format-date() to output just the date, and correspondingly, format-time() to output just the time - as was the case under .NET FW and is how the functions are documented.
Actual behavior
Both functions output both the date and time.
Regression?
Yes, the functions works as documented for .NET FW.
Known Workarounds
Don't use the default (empty) format string - pass either "d" or "T" to the functions.
Configuration
.NET 6 and above (I've not tried anything < 6)
Other information
Looking at the .NET source code, the issue seems to be in the MSFormatDateTime function. Note that the function doesn't use the "isDate" parameter.
Compare that code with the .NET FW version which clearly uses the isDate parameter to do just the Date or Time appropriately.