You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Timespan计算距离下一次市场开盘时段的时长?

计算距离下一次市场开市的时长

首先获取当前时间,再根据不同闭市/休市场景确定下一次开市时间,最后通过TimeSpan计算时间差:

# 获取当前时间(避免多次调用Get-Date导致时间不一致)
$now = Get-Date

# 初始化下一次开市时间变量
$nextMarketOpen = $null

# 根据闭市/休市场景判断下一次开市时间
if ($marketbreak) {
    # 周一至周四17:00-18:00休市,下一次开市为当天18:00
    $nextMarketOpen = Get-Date -Year $now.Year -Month $now.Month -Day $now.Day -Hour 18 -Minute 0 -Second 0
}
elseif ($marketclosehours) {
    switch ($now.DayOfWeek) {
        'Friday' {
            # 周五17:00后,下一次开市为周日18:00
            $daysUntilSunday = (7 - $now.DayOfWeek.value__) % 7
            $nextMarketOpen = $now.AddDays($daysUntilSunday).Date.AddHours(18)
        }
        'Saturday' {
            # 周六全天,下一次开市为周日18:00
            $nextMarketOpen = $now.AddDays(1).Date.AddHours(18)
        }
        'Sunday' {
            # 周日18:00前,下一次开市为当天18:00
            $nextMarketOpen = Get-Date -Year $now.Year -Month $now.Month -Day $now.Day -Hour 18 -Minute 0 -Second 0
        }
    }
}

# 计算并输出时间差
if ($nextMarketOpen) {
    $timeUntilOpen = $nextMarketOpen - $now
    Write-Host "距离下一次开市还有: $($timeUntilOpen.Days)天 $($timeUntilOpen.Hours)小时 $($timeUntilOpen.Minutes)分钟 $($timeUntilOpen.Seconds)秒"
}

代码说明

  • 提前获取当前时间,避免多次调用Get-Date出现时间偏差
  • 针对工作日午间休市($marketbreak),直接取当天18点作为开市时间
  • 针对不同闭市场景($marketclosehours):
    • 周五17点后:计算到周日的间隔天数,取周日18点
    • 周六:直接顺延1天到周日18点
    • 周日18点前:取当天18点
  • 通过两个时间对象相减得到TimeSpan,从中提取具体时长信息输出

内容的提问来源于stack exchange,提问作者iceman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:22:09