2016-02-29 78 views
0

我在ListView中有3列。來自,主題,日期 我正在使用OpenPop庫。如何將Listview日期轉換爲本地時區?

private int numberofallmessages = 0; 
     private int countMsg = 0; 

     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
     { 
      OpenPop.Pop3.Pop3Client PopClient = new OpenPop.Pop3.Pop3Client(); 
      PopClient.Connect("mail", 110, false); 
      PopClient.Authenticate("me", "me", 
       OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword); 
      List<string> uids = PopClient.GetMessageUids(); 
      int messageCount = PopClient.GetMessageCount() -1; 
      numberofallmessages = messageCount; 
      allMessages = new List<OpenPop.Mime.Message>(messageCount); 
      for (int i = messageCount; i > 0; i--)//for (int i = messageCount - 1; i > -1; i--) 
      { 
       if (backgroundWorker1.CancellationPending == true) 
       { 
        e.Cancel = true; 
        return; 
       } 
       string currentUidOnServer = uids[i]; 
       if (!seenUids.Contains(currentUidOnServer)) 
       { 
        if (i > 0) 
         allMessages.Add(PopClient.GetMessage(i)); 
        SaveFullMessage(PopClient.GetMessage(i), i); 
        w = new StreamWriter(emailsIDSFile, true); 
        w.WriteLine(currentUidOnServer); 
        w.Close(); 
        int nProgress = (messageCount - i + 1) * 100/messageCount; 
        backgroundWorker1.ReportProgress(nProgress, PopClient.GetMessageCount().ToString() + "/" + i); 
       } 
      } 
      PopClient.Disconnect(); 
     } 

     private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      pbt.Value = e.ProgressPercentage; 
      pbt.Text = e.ProgressPercentage.ToString() + "%"; 
      pbt.Invalidate(); 
      label8.Text = e.UserState.ToString(); 
      label8.Visible = true; 
      lvnf.Items.Add(new ListViewItem(new string[] 
      { 
       allMessages[countMsg].Headers.From.ToString(),   //From Column 
       allMessages[countMsg].Headers.Subject,     //Subject Column 
       allMessages[countMsg].Headers.DateSent.ToString()  //Date Column 
      })); 

      countMsg += 1; 
     } 

問題是在progresschanged事件我想。我在哪裏添加項目到每列。

當它添加電子郵件到ListView我看到這樣的:

Emails

的問題是日期列上的日期是好的,但不是我的時間。不知道現在是什麼時間,但在我的位置它現在是1:52上午

我怎樣才能得到/設置我的地方的時間? 我不能在該行發現:

allMessages[countMsg].Headers.DateSent.ToString() 

如何將其更改爲我的時間。

+1

不知道我明白,但你想排序的實際列表或只是試圖調整日期列的時間到當地時間? – Gabe

+0

我認爲排序很好,最新的項目添加在頂部。問題是「將日期欄中的時間調整爲當地時間」。 –

+2

如果你的問題是你剛纔在你的評論中指定的內容,那麼[編輯]你的問題標題,以便它準確地反映你的問題。 –

回答

1

試試這個:

allMessages[countMsg].Headers.DateSent.ToLocalTime().ToString(); 

你想利用DateTime.ToLocalTime()方法。它爲你做了繁重的工作。

希望這有助於


編輯:刪除不正確版本的文檔OpenPop.Net指出MessageHeader.DateSent財產,其實是DateTime對象。

相關問題