42 lines
1007 B
Go
42 lines
1007 B
Go
package logic
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// IsTradingTime 判断当前时间是否为A股交易时间
|
||
// A股交易时间:
|
||
// - 工作日(周一至周五)
|
||
// - 上午:9:30 - 11:30
|
||
// - 下午:13:00 - 15:00
|
||
func IsTradingTime(t time.Time) bool {
|
||
// 检查是否为工作日(1=周一, 5=周五)
|
||
weekday := t.Weekday()
|
||
if weekday == time.Saturday || weekday == time.Sunday {
|
||
return false
|
||
}
|
||
|
||
// 获取小时和分钟
|
||
hour := t.Hour()
|
||
minute := t.Minute()
|
||
|
||
// 转换为分钟数便于比较
|
||
currentMinutes := hour*60 + minute
|
||
|
||
// 上午交易时间:9:30 - 11:30 (570 - 690分钟)
|
||
morningStart := 9*60 + 30 // 570
|
||
morningEnd := 11*60 + 30 // 690
|
||
|
||
// 下午交易时间:13:00 - 15:00 (780 - 900分钟)
|
||
afternoonStart := 13 * 60 // 780
|
||
afternoonEnd := 15 * 60 // 900
|
||
|
||
// 判断是否在交易时间段内
|
||
if (currentMinutes >= morningStart && currentMinutes < morningEnd) ||
|
||
(currentMinutes >= afternoonStart && currentMinutes < afternoonEnd) {
|
||
return true
|
||
}
|
||
|
||
return false
|
||
}
|