diff --git a/lib/outputcomponents.php b/lib/outputcomponents.php index de04e4f6667..a85e0f58665 100644 --- a/lib/outputcomponents.php +++ b/lib/outputcomponents.php @@ -2049,16 +2049,19 @@ class html_writer { * @param int $currenttime A default timestamp in GMT * @param int $step minute spacing * @param array $attributes - html select element attributes - * @return HTML fragment + * @param float|int|string $timezone the timezone to use to calculate the time + * {@link https://moodledev.io/docs/apis/subsystems/time#timezone} + * @return string HTML fragment */ - public static function select_time($type, $name, $currenttime = 0, $step = 5, array $attributes = null) { + public static function select_time($type, $name, $currenttime = 0, $step = 5, array $attributes = null, $timezone = 99) { global $OUTPUT; if (!$currenttime) { $currenttime = time(); } $calendartype = \core_calendar\type_factory::get_calendar_instance(); - $currentdate = $calendartype->timestamp_to_date_array($currenttime); + $currentdate = $calendartype->timestamp_to_date_array($currenttime, $timezone); + $userdatetype = $type; $timeunits = array(); diff --git a/lib/upgrade.txt b/lib/upgrade.txt index b4a1e803837..b2e5e249dde 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -20,6 +20,7 @@ information provided here is intended especially for developers. * The options for `format_string()`, and `format_text()` are now checked for incorrectly passed context objects. Please note that this was never an accepted value but previously failed silently. * The current page language is available in new `core/config` language property for Javascript modules +* The `html_writer::select_time` method has a `$timezone` parameter to use when formatting the time parameter * The following functions have been added to adhoc_task class: - retry_until_success(): Used to indicate if the task should be re-run if it fails By default, tasks will be retried until they succeed, other tasks can override this method to change this behaviour. diff --git a/mod/data/field/date/field.class.php b/mod/data/field/date/field.class.php index 97848814f44..df3c2130657 100644 --- a/mod/data/field/date/field.class.php +++ b/mod/data/field/date/field.class.php @@ -80,9 +80,26 @@ class data_field_date extends data_field_base { } $str = '
'; - $dayselector = html_writer::select_time('days', 'field_'.$this->field->id.'_day', $content); - $monthselector = html_writer::select_time('months', 'field_'.$this->field->id.'_month', $content); - $yearselector = html_writer::select_time('years', 'field_'.$this->field->id.'_year', $content); + + $dayselector = html_writer::select_time( + type: 'days', + name: "field_{$this->field->id}_day", + currenttime: $content, + timezone: 0, + ); + $monthselector = html_writer::select_time( + type: 'months', + name: "field_{$this->field->id}_month", + currenttime: $content, + timezone: 0, + ); + $yearselector = html_writer::select_time( + type: 'years', + name: "field_{$this->field->id}_year", + currenttime: $content, + timezone: 0, + ); + $str .= $dayselector . $monthselector . $yearselector; $str .= '
';