dayjs 0.2.2

a date and time library for Rust, inspired by day.js
Documentation
================================================================================
Day.js Rust vs JavaScript API Test Comparison
================================================================================


[DIFF]
--------------------------------------------------------------------------------

Test: diff_days
Description: "Diff in days"
Status: ✅ PASSED

Test: diff_hours
Description: "Diff in hours"
Status: ✅ PASSED

Test: diff_minutes
Description: "Diff in minutes"
Status: ✅ PASSED

Test: diff_months
Description: "Diff in months"
Status: ✅ PASSED

Test: diff_seconds
Description: "Diff in seconds"
Status: ✅ PASSED

Test: diff_years
Description: "Diff in years"
Status: ✅ PASSED


[DISPLAY]
--------------------------------------------------------------------------------

Test: format_custom
Description: "Format custom"
Status: ✅ PASSED

Test: format_default
Description: "Format default"
Status: ❌ FAILED
Rust:   {
  "iso": "2023-05-15T10:30:45.000Z",
  "string": "2023-05-15T10:30:45.000000Z"
}
JS:     {
  "iso": "2023-05-15T02:30:45.000Z",
  "string": "Mon, 15 May 2023 02:30:45 GMT"
}

Test: to_iso
Description: "To ISO string"
Status: ✅ PASSED

Test: to_json
Description: "To JSON"
Status: ✅ PASSED

Test: unix_timestamp
Description: "Unix timestamp"
Status: ✅ PASSED


[GETSET]
--------------------------------------------------------------------------------

Test: date
Description: "Get day of month (1-31)"
Status: ✅ PASSED

Test: day
Description: "Get day of week (0-6)"
Status: ✅ PASSED

Test: hour_minute_second
Description: "Get hour, minute, second"
Status: ✅ PASSED

Test: month
Description: "Get month (0-11)"
Status: ✅ PASSED

Test: year
Description: "Get/Set year"
Status: ✅ PASSED


[MANIPULATE]
--------------------------------------------------------------------------------

Test: add_days
Description: "Add days"
Status: ❌ FAILED
Rust:   {
  "date": 22,
  "iso": "2023-05-22T00:00:00.000Z",
  "month": 4,
  "year": 2023
}
JS:     {
  "date": 22,
  "iso": "2023-05-21T16:00:00.000Z",
  "month": 4,
  "year": 2023
}

Test: add_months
Description: "Add months"
Status: ✅ PASSED

Test: add_years
Description: "Add years"
Status: ❌ FAILED
Rust:   {
  "date": 14,
  "month": 4,
  "year": 2024
}
JS:     {
  "date": 15,
  "month": 4,
  "year": 2024
}

Test: end_of_day
Description: "End of day"
Status: ❌ FAILED
Rust:   {
  "hour": 15,
  "iso": "2023-05-15T15:59:59.999Z",
  "millisecond": 999,
  "minute": 59,
  "second": 59
}
JS:     {
  "hour": 23,
  "iso": "2023-05-15T15:59:59.999Z",
  "millisecond": 999,
  "minute": 59,
  "second": 59
}

Test: end_of_month
Description: "End of month"
Status: ❌ FAILED
Rust:   {
  "date": 31,
  "hour": 15,
  "minute": 59
}
JS:     {
  "date": 31,
  "hour": 23,
  "minute": 59
}

Test: end_of_year
Description: "End of year"
Status: ✅ PASSED

Test: start_of_day
Description: "Start of day"
Status: ❌ FAILED
Rust:   {
  "hour": 16,
  "iso": "2023-05-14T16:00:00.000Z",
  "millisecond": 0,
  "minute": 0,
  "second": 0
}
JS:     {
  "hour": 0,
  "iso": "2023-05-14T16:00:00.000Z",
  "millisecond": 0,
  "minute": 0,
  "second": 0
}

Test: start_of_month
Description: "Start of month"
Status: ❌ FAILED
Rust:   {
  "date": 30,
  "hour": 16,
  "minute": 0
}
JS:     {
  "date": 1,
  "hour": 0,
  "minute": 0
}

Test: start_of_year
Description: "Start of year"
Status: ❌ FAILED
Rust:   {
  "date": 31,
  "month": 11
}
JS:     {
  "date": 1,
  "month": 0
}

Test: subtract_days
Description: "Subtract days"
Status: ✅ PASSED


[PARSE]
--------------------------------------------------------------------------------

Test: now
Description: "Current time"
Status: ✅ PASSED

Test: string_date_only
Description: "Parse date only string"
Status: ✅ PASSED

Test: string_iso
Description: "Parse ISO 8601 string"
Status: ❌ FAILED
Rust:   {
  "date": 15,
  "hour": 10,
  "iso": "2023-05-15T10:30:45.000Z",
  "minute": 30,
  "month": 4,
  "second": 45,
  "year": 2023
}
JS:     {
  "date": 15,
  "hour": 18,
  "iso": "2023-05-15T10:30:45.000Z",
  "minute": 30,
  "month": 4,
  "second": 45,
  "year": 2023
}

Test: unix_milliseconds
Description: "Parse Unix timestamp (milliseconds)"
Status: ✅ PASSED

Test: unix_seconds
Description: "Parse Unix timestamp (seconds)"
Status: ✅ PASSED


[QUERY]
--------------------------------------------------------------------------------

Test: is_after
Description: "Is after"
Status: ✅ PASSED

Test: is_before
Description: "Is before"
Status: ✅ PASSED

Test: is_between
Description: "Is between"
Status: ⚠️  JS ERROR
JS Error: "d2.isBetween is not a function"
Rust:     {
  "between": true,
  "notBetween": false
}

Test: is_same
Description: "Is same"
Status: ✅ PASSED

Test: is_same_or_after
Description: "Is same or after"
Status: ⚠️  JS ERROR
JS Error: "d1.isSameOrAfter is not a function"
Rust:     {
  "after": true,
  "same": true
}

Test: is_same_or_before
Description: "Is same or before"
Status: ⚠️  JS ERROR
JS Error: "d1.isSameOrBefore is not a function"
Rust:     {
  "before": true,
  "same": true
}


[UTILITIES]
--------------------------------------------------------------------------------

Test: clone
Description: "Clone dayjs object"
Status: ✅ PASSED

Test: days_in_month
Description: "Days in month"
Status: ✅ PASSED

Test: is_leap_year
Description: "Is leap year"
Status: ⚠️  JS ERROR
JS Error: "dayjs(...).isLeapYear is not a function"
Rust:     {
  "1900": false,
  "2000": true,
  "2023": false,
  "2024": true
}


================================================================================
SUMMARY
================================================================================
Total Tests:  40
Passed:       27 (67%)
Failed:       9 (22%)
================================================================================