2016-12-08 1 views
0

Атрибут TimeJobSubmitted не возвращает время в правильном Часовой пояс. Когда я вручную смотрю на очередь печати в Windows, я вижу, что время правильное в задании. (Пример: отображает Job1, представленный в 3:30);PrintSystemJobInfo.TimeJobSubmitted Reports Wrong Time?

Проблема заключается в разборе задания печати в коде с использованием PrintJobInfoCollection, похоже, что он не использует правильный часовой пояс, потому что он говорит, что TimeJobSubmitted составляет 8:30, против правильного значения, 3:30 отображается в фактическая очередь печати, отображаемая в окнах. (Щелкните правой кнопкой мыши принтер и нажмите кнопку «Показать Что Печать», чтобы увидеть очереди печати в окнах.

Вот как я смотрю через очереди печати в коде.

  LocalPrintServer server = new LocalPrintServer(); 
      PrintQueue pq = server.GetPrintQueue(printerName); 

      if (pq != null) 
      { 
       pq.Refresh(); 
       PrintJobInfoCollection jobs = pq.GetPrintJobInfoCollection(); 
       foreach (PrintSystemJobInfo job in jobs) 
       { 
        string jobName = job.Name; 
        string jobStatus = job.JobStatus.ToString(); 
        // Why is the next line 5 hours off of the correct time? 
        DateTime timeSubbited = job.TimeJobSubmitted; 
        DateTime currentTime = DateTime.Now;; 
        TimeSpan elapsed = currentTime - timeSubbited; 

        // double minutesPassed = timePassed.TotalMinutes; 

       } 
      } 

Как получить правильный TimeJobSubmitted при переборе заданий печати в C#?

ответ

1

это было некоторое время, так как я работал с DateTime. Я должен был знать, что было сообщено в UTC. правильный ответ просто вызвать .ToLocalTime()

job.TimeJobSubmitted.ToLocalTime();