PrintSystemJobInfo.UntilTimeOfDay 属性

定义

获取一天中打印作业可以开始打印的最晚时间,用协调世界时 (UTC)(也称为格林尼治标准时间 [GMT])午夜过后的分钟数表示。

public:
 property int UntilTimeOfDay { int get(); };
public int UntilTimeOfDay { get; }
member this.UntilTimeOfDay : int
Public ReadOnly Property UntilTimeOfDay As Integer

属性值

一个 Int32,指定作业可以打印的最晚时间,用 (UTC) 午夜过后的分钟数表示。 最大值为 1439。

示例

以下示例演示如何在诊断有问题的打印作业的过程中使用此属性。

static Boolean ReportAvailabilityAtThisTime (PrintSystemJobInfo^ theJob) 
{
   Boolean available = true;
   if (theJob->StartTimeOfDay != theJob->UntilTimeOfDay)
   {
      DateTime utcNow = DateTime::UtcNow;
      Int32 utcNowAsMinutesAfterMidnight = (utcNow.TimeOfDay.Hours * 60) + utcNow.TimeOfDay.Minutes;

      // If "now" is not within the range of available times . . .
      if (!((theJob->StartTimeOfDay < utcNowAsMinutesAfterMidnight) && (utcNowAsMinutesAfterMidnight < theJob->UntilTimeOfDay)))
      {
         available = false;
      }
   }
   return available;
}
private static Boolean ReportAvailabilityAtThisTime(PrintSystemJobInfo theJob)
{
    Boolean available = true;
    if (theJob.StartTimeOfDay != theJob.UntilTimeOfDay) // If the job cannot be printed at all times of day
    {
        DateTime utcNow = DateTime.UtcNow;
        Int32 utcNowAsMinutesAfterMidnight = (utcNow.TimeOfDay.Hours * 60) + utcNow.TimeOfDay.Minutes;

        // If "now" is not within the range of available times . . .
        if (!((theJob.StartTimeOfDay < utcNowAsMinutesAfterMidnight) 
           && 
           (utcNowAsMinutesAfterMidnight < theJob.UntilTimeOfDay)))
        {
            available = false;
        }
    }
    return available;
}//end ReportAvailabilityAtThisTime
Private Shared Function ReportAvailabilityAtThisTime(ByVal theJob As PrintSystemJobInfo) As Boolean
    Dim available As Boolean = True
    If theJob.StartTimeOfDay <> theJob.UntilTimeOfDay Then ' If the job cannot be printed at all times of day
        Dim utcNow As Date = Date.UtcNow
        Dim utcNowAsMinutesAfterMidnight As Int32 = (utcNow.TimeOfDay.Hours * 60) + utcNow.TimeOfDay.Minutes

        ' If "now" is not within the range of available times . . .
        If Not((theJob.StartTimeOfDay < utcNowAsMinutesAfterMidnight) AndAlso (utcNowAsMinutesAfterMidnight < theJob.UntilTimeOfDay)) Then
            available = False
        End If
    End If
    Return available
End Function 'end ReportAvailabilityAtThisTime

注解

当作业进入队列时,此值将从 PrintQueue.UntilTimeOfDay 宿主PrintQueue的 属性传播到每个 PrintSystemJobInfo 对象。 如果 PrintQueue.UntilTimeOfDay 已更改,则 PrintSystemJobInfo.UntilTimeOfDay 任何晚于 PrintQueue.UntilTimeOfDay 的值将更改为 的值 PrintQueue.UntilTimeOfDay

将作业添加到队列后,可以通过 Microsoft Windows 用户界面 (UI) 为其指定一个新 UntilTimeOfDay 值,前提是该作业不晚于 PrintQueue.UntilTimeOfDay

如果不在 UTC 时区中,则必须加减 60 的倍数才能获取时区的正确时间。 例如,如果位于太平洋时区北美且夏令时无效,则本地时间比 UTC 早 8 小时。 如果 UntilTimeOfDay 返回 960,则表示 16:00 (4:00 PM) UTC (,因为 960/60 = 16) 。 若要将其转换为太平洋时间,必须减去 480 (= 8 * 60) 分钟。

你还必须记住,时间在 24 小时后滚动到零, (即:第1439分钟后) 。 如果 UntilTimeOfDay 返回 120,则表示 UTC 时间凌晨 2:00。 若要将其转换为太平洋时间,必须减去 480 分钟,这会导致 -360。 若要获取有意义的正值,请将负数加到一天的总分钟数 1440,最终值为 1080 (太平洋时间下午 6:00) 。

有关帮助进行时区调整的方法,请参阅 TimeZoneTimeSpanDateTime

如果打印机始终可用,则此属性在所有时区中返回 0。

适用于

另请参阅