Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JavaScript] Makes a pass on the implementation of DateTime.ToString #3692

Open
MangelMaxime opened this issue Jan 6, 2024 · 1 comment
Open

Comments

@MangelMaxime
Copy link
Member

The current implementation of DateTime.ToString is incorrect for the javascript target.

For example, it considers T and t format to be the same thing when it isn't in .NET.

Description

[<Fact>]
let ``test DateTime.ToString("d") works`` () =
    DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("d")
    |> equal "9/11/2014"

[<Fact>]
let ``test DateTime.ToString("T") works`` () =
    DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("T")
    |> equal "3:37:11 AM"

    DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("T")
    |> equal "4:37:11 PM"

[<Fact>]
let ``test DateTime.ToString("t") works`` () =
    DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("t")
    |> equal "3:37 AM"

    DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("t")
    |> equal "4:37 PM"

Related information

  • Fable version: 4.9.0
  • Operating system
@MangelMaxime
Copy link
Member Author

Python implementation of DateTime.toString can serve as base for this improvements:

def to_string(date: datetime, format: str | None = None, provider: Any | None = None) -> str:
if date.tzinfo:
return date_to_string_with_offset(date, format)
return date_to_string_with_kind(date, format)

Test suite to pass can be found here (make sure to check with current main version for an up to date list)

[<Fact>]
let ``test DateTime.ToString with custom format works`` () =
DateTime(2014, 7, 1, 16, 37, 1, 2, 3).ToString("r d", CultureInfo.InvariantCulture)
|> equal "r 1"
DateTime(2014, 7, 13, 16, 37, 1, 2, 3).ToString("r d", CultureInfo.InvariantCulture)
|> equal "r 13"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r dd", CultureInfo.InvariantCulture)
|> equal "r 01"
DateTime(2014, 7, 21, 16, 37, 0).ToString("r dd", CultureInfo.InvariantCulture)
|> equal "r 21"
DateTime(2014, 7, 7, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Mon"
DateTime(2014, 7, 8, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Tue"
DateTime(2014, 7, 9, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Wed"
DateTime(2014, 7, 10, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Thu"
DateTime(2014, 7, 11, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Fri"
DateTime(2014, 7, 12, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Sat"
DateTime(2014, 7, 13, 16, 37, 0).ToString("r ddd", CultureInfo.InvariantCulture)
|> equal "r Sun"
DateTime(2014, 7, 7, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Monday"
DateTime(2014, 7, 8, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Tuesday"
DateTime(2014, 7, 9, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Wednesday"
DateTime(2014, 7, 10, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Thursday"
DateTime(2014, 7, 11, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Friday"
DateTime(2014, 7, 12, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Saturday"
DateTime(2014, 7, 13, 16, 37, 0).ToString("r dddd", CultureInfo.InvariantCulture)
|> equal "r Sunday"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r f", CultureInfo.InvariantCulture)
|> equal "r 6"
DateTime.Parse("2009-06-15T13:45:30.05").ToString("r f", CultureInfo.InvariantCulture)
|> equal "r 0"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r ff", CultureInfo.InvariantCulture)
|> equal "r 61"
DateTime.Parse("2009-06-15T13:45:30.0050000").ToString("r ff", CultureInfo.InvariantCulture)
|> equal "r 00"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r fff", CultureInfo.InvariantCulture)
|> equal "r 617"
DateTime.Parse("2009-06-15T13:45:30.0005000").ToString("r fff", CultureInfo.InvariantCulture)
|> equal "r 000"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r ffff", CultureInfo.InvariantCulture)
|> equal "r 6175"
DateTime.Parse("2009-06-15T13:45:30.0000500").ToString("r ffff", CultureInfo.InvariantCulture)
|> equal "r 0000"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r fffff", CultureInfo.InvariantCulture)
|> equal "r 61754"
DateTime.Parse("2009-06-15T13:45:30.0000050").ToString("r fffff", CultureInfo.InvariantCulture)
|> equal "r 00000"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r ffffff", CultureInfo.InvariantCulture)
|> equal "r 617542"
DateTime.Parse("2009-06-15T13:45:30.0000005").ToString("r ffffff", CultureInfo.InvariantCulture)
|> equal "r 000000"
// We only have a precision up to the microsecond
// DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r fffffff", CultureInfo.InvariantCulture)
// |> equal "r 6175425"
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r F", CultureInfo.InvariantCulture)
|> equal "r 6"
DateTime.Parse("2009-06-15T13:45:30.05").ToString("r F", CultureInfo.InvariantCulture)
|> equal "r "
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r FF", CultureInfo.InvariantCulture)
|> equal "r 61"
DateTime.Parse("2009-06-15T13:45:30.0050000").ToString("r FF", CultureInfo.InvariantCulture)
|> equal "r "
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r FFF", CultureInfo.InvariantCulture)
|> equal "r 617"
DateTime.Parse("2009-06-15T13:45:30.0005000").ToString("r FFF", CultureInfo.InvariantCulture)
|> equal "r "
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r FFFF", CultureInfo.InvariantCulture)
|> equal "r 6175"
DateTime.Parse("2009-06-15T13:45:30.0000500").ToString("r FFFF", CultureInfo.InvariantCulture)
|> equal "r "
DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r FFFFF", CultureInfo.InvariantCulture)
|> equal "r 61754"
DateTime.Parse("2009-06-15T13:45:30.0000050").ToString("r FFFFF", CultureInfo.InvariantCulture)
|> equal "r "
DateTime.Parse("2009-06-15T13:45:30.0617425").ToString("r FFFFFF", CultureInfo.InvariantCulture)
|> equal "r 061742"
DateTime.Parse("2009-06-15T13:45:30.0000005").ToString("r FFFFFF", CultureInfo.InvariantCulture)
|> equal "r "
// We only have a precision up to the microsecond
// DateTime.Parse("2009-06-15T13:45:30.6175425").ToString("r FFFFFFF", CultureInfo.InvariantCulture)
// |> equal "r 6175425"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r g", CultureInfo.InvariantCulture)
|> equal "r A.D."
DateTime(2014, 7, 1, 16, 37, 0).ToString("r gg", CultureInfo.InvariantCulture)
|> equal "r A.D."
DateTime(2014, 7, 1, 16, 37, 0).ToString("r h", CultureInfo.InvariantCulture)
|> equal "r 4"
DateTime(2014, 7, 1, 4, 37, 0).ToString("r h", CultureInfo.InvariantCulture)
|> equal "r 4"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r hh", CultureInfo.InvariantCulture)
|> equal "r 04"
DateTime(2014, 7, 1, 4, 37, 0).ToString("r hh", CultureInfo.InvariantCulture)
|> equal "r 04"
DateTime(2014, 7, 1, 4, 37, 0).ToString("r H", CultureInfo.InvariantCulture)
|> equal "r 4"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r H", CultureInfo.InvariantCulture)
|> equal "r 16"
DateTime(2014, 7, 1, 4, 37, 0).ToString("r HH", CultureInfo.InvariantCulture)
|> equal "r 04"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r HH", CultureInfo.InvariantCulture)
|> equal "r 16"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r K", CultureInfo.InvariantCulture)
|> equal "r "
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r K", CultureInfo.InvariantCulture)
|> equal "r Z"
// Timezone dependent (test is configured for Europe/Paris timezone)
// DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Local).ToString("r K", CultureInfo.InvariantCulture)
// |> equal "r +02:00"
DateTime(2014, 7, 1, 16, 3, 0).ToString("r m", CultureInfo.InvariantCulture)
|> equal "r 3"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r m", CultureInfo.InvariantCulture)
|> equal "r 37"
DateTime(2014, 7, 1, 16, 3, 0).ToString("r mm", CultureInfo.InvariantCulture)
|> equal "r 03"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r mm", CultureInfo.InvariantCulture)
|> equal "r 37"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r M", CultureInfo.InvariantCulture)
|> equal "r 7"
DateTime(2014, 11, 1, 16, 37, 0).ToString("r M", CultureInfo.InvariantCulture)
|> equal "r 11"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r MM", CultureInfo.InvariantCulture)
|> equal "r 07"
DateTime(2014, 11, 1, 16, 37, 0).ToString("r MM", CultureInfo.InvariantCulture)
|> equal "r 11"
DateTime(2014, 1, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Jan"
DateTime(2014, 2, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Feb"
DateTime(2014, 3, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Mar"
DateTime(2014, 4, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Apr"
DateTime(2014, 5, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r May"
DateTime(2014, 6, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Jun"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Jul"
DateTime(2014, 8, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Aug"
DateTime(2014, 9, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Sep"
DateTime(2014, 10, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Oct"
DateTime(2014, 11, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Nov"
DateTime(2014, 12, 1, 16, 37, 0).ToString("r MMM", CultureInfo.InvariantCulture)
|> equal "r Dec"
DateTime(2014, 1, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r January"
DateTime(2014, 2, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r February"
DateTime(2014, 3, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r March"
DateTime(2014, 4, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r April"
DateTime(2014, 5, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r May"
DateTime(2014, 6, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r June"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r July"
DateTime(2014, 8, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r August"
DateTime(2014, 9, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r September"
DateTime(2014, 10, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r October"
DateTime(2014, 11, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r November"
DateTime(2014, 12, 1, 16, 37, 0).ToString("r MMMM", CultureInfo.InvariantCulture)
|> equal "r December"
DateTime(2014, 7, 1, 16, 37, 3).ToString("r s", CultureInfo.InvariantCulture)
|> equal "r 3"
DateTime(2014, 7, 1, 16, 37, 31).ToString("r s", CultureInfo.InvariantCulture)
|> equal "r 31"
DateTime(2014, 7, 1, 16, 37, 3).ToString("r ss", CultureInfo.InvariantCulture)
|> equal "r 03"
DateTime(2014, 7, 1, 16, 37, 31).ToString("r ss", CultureInfo.InvariantCulture)
|> equal "r 31"
DateTime(2014, 7, 1, 1, 37, 0).ToString("r t", CultureInfo.InvariantCulture)
|> equal "r A"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r t", CultureInfo.InvariantCulture)
|> equal "r P"
DateTime(2014, 7, 1, 1, 37, 0).ToString("r tt", CultureInfo.InvariantCulture)
|> equal "r AM"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r tt", CultureInfo.InvariantCulture)
|> equal "r PM"
DateTime(1,1,1).ToString("r y", CultureInfo.InvariantCulture)
|> equal "r 1"
DateTime(0900,1,1).ToString("r y", CultureInfo.InvariantCulture)
|> equal "r 0"
DateTime(1900,1,1).ToString("r y", CultureInfo.InvariantCulture)
|> equal "r 0"
DateTime(2009,1,1).ToString("r y", CultureInfo.InvariantCulture)
|> equal "r 9"
DateTime(2019,1,1).ToString("r y", CultureInfo.InvariantCulture)
|> equal "r 19"
DateTime(1,1,1).ToString("r yy", CultureInfo.InvariantCulture)
|> equal "r 01"
DateTime(0900,1,1).ToString("r yy", CultureInfo.InvariantCulture)
|> equal "r 00"
DateTime(1900,1,1).ToString("r yy", CultureInfo.InvariantCulture)
|> equal "r 00"
DateTime(2009,1,1).ToString("r yy", CultureInfo.InvariantCulture)
|> equal "r 09"
DateTime(2019,1,1).ToString("r yy", CultureInfo.InvariantCulture)
|> equal "r 19"
DateTime(1,1,1).ToString("r yyy", CultureInfo.InvariantCulture)
|> equal "r 001"
DateTime(0900,1,1).ToString("r yyy", CultureInfo.InvariantCulture)
|> equal "r 900"
DateTime(1900,1,1).ToString("r yyy", CultureInfo.InvariantCulture)
|> equal "r 1900"
DateTime(2009,1,1).ToString("r yyy", CultureInfo.InvariantCulture)
|> equal "r 2009"
DateTime(2019,1,1).ToString("r yyy", CultureInfo.InvariantCulture)
|> equal "r 2019"
DateTime(1,1,1).ToString("r yyyy", CultureInfo.InvariantCulture)
|> equal "r 0001"
DateTime(0900,1,1).ToString("r yyyy", CultureInfo.InvariantCulture)
|> equal "r 0900"
DateTime(1900,1,1).ToString("r yyyy", CultureInfo.InvariantCulture)
|> equal "r 1900"
DateTime(2009,1,1).ToString("r yyyy", CultureInfo.InvariantCulture)
|> equal "r 2009"
DateTime(2019,1,1).ToString("r yyyy", CultureInfo.InvariantCulture)
|> equal "r 2019"
DateTime(1,1,1).ToString("r yyyyy", CultureInfo.InvariantCulture)
|> equal "r 00001"
DateTime(0900,1,1).ToString("r yyyyy", CultureInfo.InvariantCulture)
|> equal "r 00900"
DateTime(1900,1,1).ToString("r yyyyy", CultureInfo.InvariantCulture)
|> equal "r 01900"
DateTime(2009,1,1).ToString("r yyyyy", CultureInfo.InvariantCulture)
|> equal "r 02009"
DateTime(2019,1,1).ToString("r yyyyy", CultureInfo.InvariantCulture)
|> equal "r 02019"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r z", CultureInfo.InvariantCulture)
|> equal "r +0"
// Timezone dependent (test is configured for Europe/Paris timezone)
// DateTime(2014, 7, 1, 16, 37, 0).ToString("r z", CultureInfo.InvariantCulture)
// |> equal "r +2"
// DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Local).ToString("r z", CultureInfo.InvariantCulture)
// |> equal "r +2"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r zz", CultureInfo.InvariantCulture)
|> equal "r +00"
// Timezone dependent (test is configured for Europe/Paris timezone)
// DateTime(2014, 7, 1, 16, 37, 0).ToString("r zz", CultureInfo.InvariantCulture)
// |> equal "r +02"
// DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Local).ToString("r zz", CultureInfo.InvariantCulture)
// |> equal "r +02"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r zzz", CultureInfo.InvariantCulture)
|> equal "r +00:00"
// Timezone dependent (test is configured for Europe/Paris timezone)
// DateTime(2014, 7, 1, 16, 37, 0).ToString("r zzz", CultureInfo.InvariantCulture)
// |> equal "r +02:00"
// DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Local).ToString("r zzz", CultureInfo.InvariantCulture)
// |> equal "r +02:00"
// Time separator
DateTime(2014, 7, 1, 16, 37, 0).ToString("r :", CultureInfo.InvariantCulture)
|> equal "r :"
// Date separator
DateTime(2014, 7, 1, 16, 37, 0).ToString("r /", CultureInfo.InvariantCulture)
|> equal "r /"
// String quotation
DateTime(2014, 7, 1, 16, 37, 0).ToString("r \"hh\" h", CultureInfo.InvariantCulture)
|> equal "r hh 4"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r 'hh' h", CultureInfo.InvariantCulture)
|> equal "r hh 4"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r \'hh\'", CultureInfo.InvariantCulture)
|> equal "r hh"
// Format character
DateTime(2014, 7, 1, 16, 37, 0).ToString("r %h", CultureInfo.InvariantCulture)
|> equal "r 4"
DateTime(2014, 7, 1, 16, 37, 0).ToString("r %hh", CultureInfo.InvariantCulture)
|> equal "r 44"
// Escape character
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r \zz", CultureInfo.InvariantCulture)
|> equal "r z+0"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r \\zz", CultureInfo.InvariantCulture)
|> equal "r z+0"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r \\\zz", CultureInfo.InvariantCulture)
|> equal "r \+00"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("r \\z\\z", CultureInfo.InvariantCulture)
|> equal "r zz"
// Escape character with verbatim string
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("""r \zz""", CultureInfo.InvariantCulture)
|> equal "r z+0"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("""r \\zz""", CultureInfo.InvariantCulture)
|> equal "r \+00"
DateTime(2014, 7, 1, 16, 37, 0, DateTimeKind.Utc).ToString("""r \\\zz""", CultureInfo.InvariantCulture)
|> equal "r \z+0"
[<Fact>]
let ``test DateTime.ToString without separator works`` () =
DateTime(2017, 9, 5).ToString("yyyyMM")
|> equal "201709"
[<Fact>]
let ``test DateTime.ToString with milliseconds`` () =
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("ss.fff")
|> equal "11.345"
[<Fact>]
let ``test DateTime.ToString("d") works`` () =
#if !FABLE_COMPILER
Threading.Thread.CurrentThread.CurrentCulture <- CultureInfo.InvariantCulture
#endif
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("d")
|> equal "09/11/2014"
DateTime(2014, 9, 1, 16, 37, 11, 345).ToString("d")
|> equal "09/01/2014"
// Needs to add (upper) and (lower) in the test name because
// the names of the function are lowered making them equal
[<Fact>]
let ``test DateTime.ToShortTimeString works`` () =
#if !FABLE_COMPILER
Threading.Thread.CurrentThread.CurrentCulture <- CultureInfo.InvariantCulture
#endif
DateTime(2014, 9, 11, 16, 37, 0).ToShortTimeString()
|> equal "16:37"
[<Fact>]
let ``test DateTime.ToLongTimeString works`` () =
#if !FABLE_COMPILER
Threading.Thread.CurrentThread.CurrentCulture <- CultureInfo.InvariantCulture
#endif
DateTime(2014, 9, 11, 16, 37, 0).ToLongTimeString()
|> equal "16:37:00"
[<Fact>]
let ``test DateTime.ToLongDateString works`` () =
#if !FABLE_COMPILER
Threading.Thread.CurrentThread.CurrentCulture <- CultureInfo.InvariantCulture
#endif
DateTime(2014, 9, 11, 16, 37, 0).ToLongDateString()
|> equal "Thursday, 11 September 2014"
[<Fact>]
let ``test DateTime.ToShortDateString works`` () =
#if !FABLE_COMPILER
Threading.Thread.CurrentThread.CurrentCulture <- CultureInfo.InvariantCulture
#endif
DateTime(2014, 9, 11, 16, 37, 0).ToShortDateString()
|> equal "09/11/2014"
[<Fact>]
let ``test DateTime.ToString("T") (upper) works`` () =
#if FABLE_COMPILER
DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("T")
#else
DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("T", CultureInfo.InvariantCulture)
#endif
|> equal "03:37:11"
#if FABLE_COMPILER
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("T")
#else
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("T", CultureInfo.InvariantCulture)
#endif
|> equal "16:37:11"
[<Fact>]
let ``test DateTime.ToString("t") (lower) works`` () =
#if FABLE_COMPILER
DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("t")
#else
DateTime(2014, 9, 11, 3, 37, 11, 345).ToString("t", CultureInfo.InvariantCulture)
#endif
|> equal "03:37"
#if FABLE_COMPILER
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("t")
#else
DateTime(2014, 9, 11, 16, 37, 11, 345).ToString("t", CultureInfo.InvariantCulture)
#endif
|> equal "16:37"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant