# frozen_string_literal: true module RailsAdmin module Support class Datetime # Ruby format options as a key and flatpickr format options as a value FLATPICKR_TRANSLATIONS = { '%A' => 'l', # The full weekday name ("Sunday") '%a' => 'D', # The abbreviated weekday name ("Sun") '%B' => 'F', # The full month name ("January") '%b' => 'M', # The abbreviated month name ("Jan") '%D' => 'm/d/y', # American date format mm/dd/yy '%d' => 'd', # Day of the month (01..31) '%-d' => 'j', # Day of the month (1..31) '%e' => 'j', # Day of the month (1..31) '%F' => 'Y-m-d', # ISO 8601 date format '%H' => 'H', # Hour of the day, 24-hour clock (00..23) '%-H' => 'H', # Hour of the day, 24-hour clock (0..23) '%h' => 'M', # Same as %b '%I' => 'G', # Hour of the day, 12-hour clock (01..12) '%-I' => 'h', # Hour of the day, 12-hour clock (1..12) '%k' => 'H', # Hour of the day, 24-hour clock (0..23) '%l' => 'h', # Hour of the day, 12-hour clock (1..12) '%M' => 'i', # Minute of the hour (00..59) '%-M' => 'i', # Minute of the hour (00..59) '%m' => 'm', # Month of the year (01..12) '%-m' => 'n', # Month of the year (1..12) '%P' => 'K', # Meridian indicator ('am' or 'pm') '%p' => 'K', # Meridian indicator ('AM' or 'PM') '%R' => 'H:i', # 24-hour time (%H:%M) '%r' => 'G:i:S K', # 12-hour time (%I:%M:%S %p) '%S' => 'S', # Second of the minute (00..60) '%-S' => 's', # Second of the minute (0..60) '%s' => 'U', # Number of seconds since 1970-01-01 00:00:00 UTC. '%T' => 'H:i:S', # 24-hour time (%H:%M:%S) '%U' => 'W', # Week number of the year. The week starts with Sunday. (00..53) '%w' => 'w', # Day of the week (Sunday is 0, 0..6) '%X' => 'H:i:S', # Same as %T '%x' => 'm/d/y', # Same as %D '%Y' => 'Y', # Year with century '%y' => 'y', # Year without a century (00..99) '%%' => '%', }.freeze class << self def to_flatpickr_format(strftime_format) strftime_format.gsub(/(?