time: add str()
							parent
							
								
									9b3ac7efa4
								
							
						
					
					
						commit
						84438c0139
					
				| 
						 | 
					@ -483,3 +483,9 @@ pub fn (t Time) get_fmt_str(fmt_dlmtr FormatDelimiter, fmt_time FormatTime, fmt_
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// `str` returns time in the same format as `parse` expects: "2018-01-27 12:48:34"
 | 
				
			||||||
 | 
					// TODO define common default format for `str` and `parse` and use it in both ways
 | 
				
			||||||
 | 
					pub fn (t Time) str() string {
 | 
				
			||||||
 | 
						return t.format_ss()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,29 +1,30 @@
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	time_to_test = time.new_time(time.Time {
 | 
						time_to_test = time.new_time(time.Time{
 | 
				
			||||||
		year: 1980, month:	7, day: 11,
 | 
							year: 1980
 | 
				
			||||||
		hour: 21, minute: 23, second: 42
 | 
							month: 7
 | 
				
			||||||
 | 
							day: 11
 | 
				
			||||||
 | 
							hour: 21
 | 
				
			||||||
 | 
							minute: 23
 | 
				
			||||||
 | 
							second: 42
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_is_leap_year() {
 | 
					fn test_is_leap_year() {
 | 
				
			||||||
	// 1996 % 4 = 0 and 1996 % 100 > 0
 | 
						// 1996 % 4 = 0 and 1996 % 100 > 0
 | 
				
			||||||
	assert time.is_leap_year(1996) == true
 | 
						assert time.is_leap_year(1996) == true
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 2000 % 4 = 0 and 2000 % 400 = 0
 | 
						// 2000 % 4 = 0 and 2000 % 400 = 0
 | 
				
			||||||
	assert time.is_leap_year(2000) == true
 | 
						assert time.is_leap_year(2000) == true
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 1996 % 4 > 0
 | 
						// 1996 % 4 > 0
 | 
				
			||||||
	assert time.is_leap_year(1997) == false
 | 
						assert time.is_leap_year(1997) == false
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// 2000 % 4 = 0 and 2000 % 100 = 0
 | 
						// 2000 % 4 = 0 and 2000 % 100 = 0
 | 
				
			||||||
	assert time.is_leap_year(2100) == false
 | 
						assert time.is_leap_year(2100) == false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_now_format() {
 | 
					fn test_now_format() {
 | 
				
			||||||
	t := time.now()
 | 
						t := time.now()
 | 
				
			||||||
	u:=t.unix
 | 
						u := t.unix
 | 
				
			||||||
	println(u)
 | 
						println(u)
 | 
				
			||||||
	println(t.format())
 | 
						println(t.format())
 | 
				
			||||||
	println(time.unix(u).format())
 | 
						println(time.unix(u).format())
 | 
				
			||||||
| 
						 | 
					@ -39,10 +40,8 @@ fn check_days_in_month(month, year, expected int) bool {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_days_in_month() {
 | 
					fn test_days_in_month() {
 | 
				
			||||||
	days_in_month := [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 | 
						days_in_month := [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i, days in days_in_month {
 | 
						for i, days in days_in_month {
 | 
				
			||||||
		month := i + 1
 | 
							month := i + 1
 | 
				
			||||||
 | 
					 | 
				
			||||||
		assert check_days_in_month(month, 2001, days)
 | 
							assert check_days_in_month(month, 2001, days)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -55,7 +54,6 @@ fn test_unix() {
 | 
				
			||||||
	assert t.hour == 2
 | 
						assert t.hour == 2
 | 
				
			||||||
	assert t.minute == 14
 | 
						assert t.minute == 14
 | 
				
			||||||
	assert t.second == 59
 | 
						assert t.second == 59
 | 
				
			||||||
 | 
					 | 
				
			||||||
	t2 := time.unix(1078058096)
 | 
						t2 := time.unix(1078058096)
 | 
				
			||||||
	assert t2.year == 2004
 | 
						assert t2.year == 2004
 | 
				
			||||||
	assert t2.month == 2
 | 
						assert t2.month == 2
 | 
				
			||||||
| 
						 | 
					@ -63,7 +61,6 @@ fn test_unix() {
 | 
				
			||||||
	assert t2.hour == 12
 | 
						assert t2.hour == 12
 | 
				
			||||||
	assert t2.minute == 34
 | 
						assert t2.minute == 34
 | 
				
			||||||
	assert t2.second == 56
 | 
						assert t2.second == 56
 | 
				
			||||||
 | 
					 | 
				
			||||||
	t3 := time.unix(1070236799)
 | 
						t3 := time.unix(1070236799)
 | 
				
			||||||
	assert t3.year == 2003
 | 
						assert t3.year == 2003
 | 
				
			||||||
	assert t3.month == 11
 | 
						assert t3.month == 11
 | 
				
			||||||
| 
						 | 
					@ -71,7 +68,6 @@ fn test_unix() {
 | 
				
			||||||
	assert t3.hour == 23
 | 
						assert t3.hour == 23
 | 
				
			||||||
	assert t3.minute == 59
 | 
						assert t3.minute == 59
 | 
				
			||||||
	assert t3.second == 59
 | 
						assert t3.second == 59
 | 
				
			||||||
 | 
					 | 
				
			||||||
	t4 := time.unix(1577783439)
 | 
						t4 := time.unix(1577783439)
 | 
				
			||||||
	assert t4.year == 2019
 | 
						assert t4.year == 2019
 | 
				
			||||||
	assert t4.month == 12
 | 
						assert t4.month == 12
 | 
				
			||||||
| 
						 | 
					@ -79,7 +75,6 @@ fn test_unix() {
 | 
				
			||||||
	assert t4.hour == 9
 | 
						assert t4.hour == 9
 | 
				
			||||||
	assert t4.minute == 10
 | 
						assert t4.minute == 10
 | 
				
			||||||
	assert t4.second == 39
 | 
						assert t4.second == 39
 | 
				
			||||||
 | 
					 | 
				
			||||||
	t5 := time.unix(-1824922433)
 | 
						t5 := time.unix(-1824922433)
 | 
				
			||||||
	assert t5.year == 1912
 | 
						assert t5.year == 1912
 | 
				
			||||||
	assert t5.month == 3
 | 
						assert t5.month == 3
 | 
				
			||||||
| 
						 | 
					@ -87,7 +82,6 @@ fn test_unix() {
 | 
				
			||||||
	assert t5.hour == 5
 | 
						assert t5.hour == 5
 | 
				
			||||||
	assert t5.minute == 6
 | 
						assert t5.minute == 6
 | 
				
			||||||
	assert t5.second == 7
 | 
						assert t5.second == 7
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	t6 := time.unix(1577858969)
 | 
						t6 := time.unix(1577858969)
 | 
				
			||||||
	assert t6.year == 2020
 | 
						assert t6.year == 2020
 | 
				
			||||||
	assert t6.month == 1
 | 
						assert t6.month == 1
 | 
				
			||||||
| 
						 | 
					@ -102,19 +96,19 @@ fn test_format_ss() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_smonth() {
 | 
					fn test_smonth() {
 | 
				
			||||||
	month_names := [
 | 
						month_names := ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
 | 
				
			||||||
		'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
 | 
						'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
 | 
				
			||||||
		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
 | 
					 | 
				
			||||||
	]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i, name in month_names {
 | 
						for i, name in month_names {
 | 
				
			||||||
		month_num := i + 1
 | 
							month_num := i + 1
 | 
				
			||||||
 | 
							t := time.Time{
 | 
				
			||||||
		t := time.Time {
 | 
								year: 1980
 | 
				
			||||||
			year: 1980, month: month_num, day: 1,
 | 
								month: month_num
 | 
				
			||||||
			hour: 0, minute: 0, second: 0, unix: 0
 | 
								day: 1
 | 
				
			||||||
 | 
								hour: 0
 | 
				
			||||||
 | 
								minute: 0
 | 
				
			||||||
 | 
								second: 0
 | 
				
			||||||
 | 
								unix: 0
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		assert t.smonth() == name
 | 
							assert t.smonth() == name
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -150,27 +144,33 @@ fn test_md() {
 | 
				
			||||||
fn test_day_of_week() {
 | 
					fn test_day_of_week() {
 | 
				
			||||||
	for i := 0; i < 7; i++ {
 | 
						for i := 0; i < 7; i++ {
 | 
				
			||||||
		day_of_week := i + 1
 | 
							day_of_week := i + 1
 | 
				
			||||||
 | 
					 | 
				
			||||||
		// 2 Dec 2019 is Monday
 | 
							// 2 Dec 2019 is Monday
 | 
				
			||||||
		t := time.Time {
 | 
							t := time.Time{
 | 
				
			||||||
			year: 2019, month: 12, day: 2 + i,
 | 
								year: 2019
 | 
				
			||||||
			hour: 0, minute: 0, second: 0, unix: 0
 | 
								month: 12
 | 
				
			||||||
 | 
								day: 2 + i
 | 
				
			||||||
 | 
								hour: 0
 | 
				
			||||||
 | 
								minute: 0
 | 
				
			||||||
 | 
								second: 0
 | 
				
			||||||
 | 
								unix: 0
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		assert day_of_week == t.day_of_week()
 | 
							assert day_of_week == t.day_of_week()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_weekday_str() {
 | 
					fn test_weekday_str() {
 | 
				
			||||||
	day_names := ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
 | 
						day_names := ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i, name in day_names {
 | 
						for i, name in day_names {
 | 
				
			||||||
		// 2 Dec 2019 is Monday
 | 
							// 2 Dec 2019 is Monday
 | 
				
			||||||
		t := time.Time {
 | 
							t := time.Time{
 | 
				
			||||||
			year: 2019, month: 12, day: 2 + i,
 | 
								year: 2019
 | 
				
			||||||
			hour: 0, minute: 0, second: 0, unix: 0
 | 
								month: 12
 | 
				
			||||||
 | 
								day: 2 + i
 | 
				
			||||||
 | 
								hour: 0
 | 
				
			||||||
 | 
								minute: 0
 | 
				
			||||||
 | 
								second: 0
 | 
				
			||||||
 | 
								unix: 0
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					 | 
				
			||||||
		assert t.weekday_str() == name
 | 
							assert t.weekday_str() == name
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -178,7 +178,6 @@ fn test_weekday_str() {
 | 
				
			||||||
fn test_add_days() {
 | 
					fn test_add_days() {
 | 
				
			||||||
	num_of_days := 3
 | 
						num_of_days := 3
 | 
				
			||||||
	t := time_to_test.add_days(num_of_days)
 | 
						t := time_to_test.add_days(num_of_days)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert t.day == time_to_test.day + num_of_days
 | 
						assert t.day == time_to_test.day + num_of_days
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -194,27 +193,21 @@ fn test_get_fmt_date_str() {
 | 
				
			||||||
	assert '11/07/1980' == time_to_test.get_fmt_date_str(.slash, .ddmmyyyy)
 | 
						assert '11/07/1980' == time_to_test.get_fmt_date_str(.slash, .ddmmyyyy)
 | 
				
			||||||
	assert '11-07-1980' == time_to_test.get_fmt_date_str(.hyphen, .ddmmyyyy)
 | 
						assert '11-07-1980' == time_to_test.get_fmt_date_str(.hyphen, .ddmmyyyy)
 | 
				
			||||||
	assert '11 07 1980' == time_to_test.get_fmt_date_str(.space, .ddmmyyyy)
 | 
						assert '11 07 1980' == time_to_test.get_fmt_date_str(.space, .ddmmyyyy)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert '07.11.1980' == time_to_test.get_fmt_date_str(.dot, .mmddyyyy)
 | 
						assert '07.11.1980' == time_to_test.get_fmt_date_str(.dot, .mmddyyyy)
 | 
				
			||||||
	assert '07/11/1980' == time_to_test.get_fmt_date_str(.slash, .mmddyyyy)
 | 
						assert '07/11/1980' == time_to_test.get_fmt_date_str(.slash, .mmddyyyy)
 | 
				
			||||||
	assert '07-11-1980' == time_to_test.get_fmt_date_str(.hyphen, .mmddyyyy)
 | 
						assert '07-11-1980' == time_to_test.get_fmt_date_str(.hyphen, .mmddyyyy)
 | 
				
			||||||
	assert '07 11 1980' == time_to_test.get_fmt_date_str(.space, .mmddyyyy)
 | 
						assert '07 11 1980' == time_to_test.get_fmt_date_str(.space, .mmddyyyy)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert '11.07.80' == time_to_test.get_fmt_date_str(.dot, .ddmmyy)
 | 
						assert '11.07.80' == time_to_test.get_fmt_date_str(.dot, .ddmmyy)
 | 
				
			||||||
	assert '11/07/80' == time_to_test.get_fmt_date_str(.slash, .ddmmyy)
 | 
						assert '11/07/80' == time_to_test.get_fmt_date_str(.slash, .ddmmyy)
 | 
				
			||||||
	assert '11-07-80' == time_to_test.get_fmt_date_str(.hyphen, .ddmmyy)
 | 
						assert '11-07-80' == time_to_test.get_fmt_date_str(.hyphen, .ddmmyy)
 | 
				
			||||||
	assert '11 07 80' == time_to_test.get_fmt_date_str(.space, .ddmmyy)
 | 
						assert '11 07 80' == time_to_test.get_fmt_date_str(.space, .ddmmyy)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert '07.11.80' == time_to_test.get_fmt_date_str(.dot, .mmddyy)
 | 
						assert '07.11.80' == time_to_test.get_fmt_date_str(.dot, .mmddyy)
 | 
				
			||||||
	assert '07/11/80' == time_to_test.get_fmt_date_str(.slash, .mmddyy)
 | 
						assert '07/11/80' == time_to_test.get_fmt_date_str(.slash, .mmddyy)
 | 
				
			||||||
	assert '07-11-80' == time_to_test.get_fmt_date_str(.hyphen, .mmddyy)
 | 
						assert '07-11-80' == time_to_test.get_fmt_date_str(.hyphen, .mmddyy)
 | 
				
			||||||
	assert '07 11 80' == time_to_test.get_fmt_date_str(.space, .mmddyy)
 | 
						assert '07 11 80' == time_to_test.get_fmt_date_str(.space, .mmddyy)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert 'Jul 11' == time_to_test.get_fmt_date_str(.space, .mmmd)
 | 
						assert 'Jul 11' == time_to_test.get_fmt_date_str(.space, .mmmd)
 | 
				
			||||||
	assert 'Jul 11' == time_to_test.get_fmt_date_str(.space, .mmmdd)
 | 
						assert 'Jul 11' == time_to_test.get_fmt_date_str(.space, .mmmdd)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert 'Jul 11 1980' == time_to_test.get_fmt_date_str(.space, .mmmddyyyy)
 | 
						assert 'Jul 11 1980' == time_to_test.get_fmt_date_str(.space, .mmmddyyyy)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	assert '1980-07-11' == time_to_test.get_fmt_date_str(.hyphen, .yyyymmdd)
 | 
						assert '1980-07-11' == time_to_test.get_fmt_date_str(.hyphen, .yyyymmdd)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -222,31 +215,27 @@ fn test_get_fmt_str() {
 | 
				
			||||||
	// Since get_fmt_time_str and get_fmt_date_str do have comprehensive
 | 
						// Since get_fmt_time_str and get_fmt_date_str do have comprehensive
 | 
				
			||||||
	// tests I don't want to exaggerate here with all possible
 | 
						// tests I don't want to exaggerate here with all possible
 | 
				
			||||||
	// combinations.
 | 
						// combinations.
 | 
				
			||||||
	assert '11.07.1980 21:23:42' == time_to_test.get_fmt_str(
 | 
						assert '11.07.1980 21:23:42' == time_to_test.get_fmt_str(.dot, .hhmmss24, .ddmmyyyy)
 | 
				
			||||||
		.dot, .hhmmss24, .ddmmyyyy
 | 
					 | 
				
			||||||
	)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_parse() {
 | 
					fn test_parse() {
 | 
				
			||||||
	s := '2018-01-27 12:48:34'
 | 
						s := '2018-01-27 12:48:34'
 | 
				
			||||||
	t := time.parse(s)
 | 
						t := time.parse(s)
 | 
				
			||||||
	assert t.year == 2018 && t.month == 1 && t.day == 27
 | 
						assert t.year == 2018 && t.month == 1 && t.day == 27 && t.hour == 12 && t.minute == 48 && t.second == 34
 | 
				
			||||||
	    && t.hour == 12 && t.minute == 48 && t.second == 34
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn test_parse_iso() {
 | 
					fn test_parse_iso() {
 | 
				
			||||||
	s1 := 'Thu, 12 Dec 2019 06:07:45 GMT'
 | 
						s1 := 'Thu, 12 Dec 2019 06:07:45 GMT'
 | 
				
			||||||
	t1 := time.parse_iso(s1)
 | 
						t1 := time.parse_iso(s1)
 | 
				
			||||||
	assert t1.year == 2019 && t1.month == 12 && t1.day == 12
 | 
						assert t1.year == 2019 && t1.month == 12 && t1.day == 12 && t1.hour == 6 && t1.minute == 7 && t1.second == 45
 | 
				
			||||||
	    && t1.hour == 6 && t1.minute == 7 && t1.second == 45
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	s2 := 'Thu 12 Dec 2019 06:07:45 +0800'
 | 
						s2 := 'Thu 12 Dec 2019 06:07:45 +0800'
 | 
				
			||||||
	t2 := time.parse_iso(s2)
 | 
						t2 := time.parse_iso(s2)
 | 
				
			||||||
	assert t2.year == 2019 && t2.month == 12 && t2.day == 12
 | 
						assert t2.year == 2019 && t2.month == 12 && t2.day == 12 && t2.hour == 6 && t2.minute == 7 && t2.second == 45
 | 
				
			||||||
	    && t2.hour == 6 && t2.minute == 7 && t2.second == 45
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	s3 := 'Thu 12 Foo 2019 06:07:45 +0800'
 | 
						s3 := 'Thu 12 Foo 2019 06:07:45 +0800'
 | 
				
			||||||
	t3 := time.parse_iso(s3)
 | 
						t3 := time.parse_iso(s3)
 | 
				
			||||||
	assert t3.year == 0 && t3.month == 0 && t3.day == 0
 | 
						assert t3.year == 0 && t3.month == 0 && t3.day == 0 && t3.hour == 0 && t3.minute == 0 && t3.second == 0
 | 
				
			||||||
	    && t3.hour == 0 && t3.minute == 0 && t3.second == 0
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn test_str() {
 | 
				
			||||||
 | 
						assert '1980-07-11 21:23:42' == time_to_test.str()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue