1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
extends Control
class_name DatePicker
const days_per_month: Dictionary = {
1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31,
}
onready var year_picker: ValuePicker = get_node("year")
onready var month_picker: ValuePicker = get_node("month")
onready var day_picker: ValuePicker = get_node("day")
func _process(delta: float):
var year := year_picker.value
var month := month_picker.value
var day := day_picker.value
var days_on_month: int = days_per_month[month]
var is_leap_year := (year % 4 == 0 && year % 100 != 0) || year % 400 == 0
if is_leap_year && month == 2:
days_on_month = 29
if day > days_on_month:
day_picker.value = days_on_month
day_picker.max_value = days_on_month
func get_day() -> int:
return day_picker.value
func get_month() -> int:
return month_picker.value
func get_year() -> int:
return year_picker.value
func get_date() -> Dictionary:
return {
year = year_picker.value,
month = month_picker.value,
day = day_picker.value,
}
func set_date(new_year: int, new_month: int, new_day: int):
year_picker.value = new_year
month_picker.value = new_month
day_picker.value = new_day
|