PrintSystemJobInfo.UntilTimeOfDay 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一天中打印作业可以开始打印的最晚时间,用协调世界时 (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) 。
有关帮助进行时区调整的方法,请参阅 TimeZone、 TimeSpan和 DateTime 。
如果打印机始终可用,则此属性在所有时区中返回 0。