我正在获取msg文件并更改与Outlook中本地日期相匹配的日期。(在Outlook中打开消息时,同一发送日期)。但是时代似乎有1个小时或多个小时的时间。我已经抛弃了时间以进一步调查: - 我正在使用Aspose打开MSG文件。C#
1.MSG显示:2011年5月1日00:46在Outlook 2016中。GMT
05/01/2011 00:46:07,kind = utc时区偏移= -08:00:00实际UTC时间为05/01/2011 00:46:07消息日期到通用时间 TimeZoneOffset:04/01/2011 16:46:07TimeZoneOffset:-08:00:00计算的通用消息日期:04/01/2011 16:46:07输出04/01/2011 08:46 AM
2.msg显示20/06/2016 16:25在Outlook 2016.GMT
20/06/2016 16:25:23,善良=本地时区偏移= 02:00:00实际UTC时间是20/06/2016 15:25:23消息日期到通用时间 TimeZoneOffset:20/06/2016 17:25:23TimeZoneOffset:02:00:00计算的通用消息日期:20/06/2016 17:25:23输出06/20/2016 07:25 PM
关于如何纠正它与Outlook相同的任何想法?我看到有时是UTC,有些是本地的,有人知道吗?
MailMessage msg = MailMessage.Load(inFile);
MemoryStream ms = new MemoryStream();
Console.WriteLine(msg.Date.ToString() + ", Kind = " + msg.Date.Kind);
Console.WriteLine("TimeZone offset = " + msg.TimeZoneOffset);
Console.WriteLine("Actual UTC Time is " + msg.Date.ToUniversalTime().ToString());
Console.WriteLine("Message date to universal time + timezoneoffset: " + (msg.Date.ToUniversalTime() +
msg.TimeZoneOffset).ToString());
Console.WriteLine("timezoneoffset: " + msg.TimeZoneOffset.ToString());
// do calculation.
TimeZone localZone = TimeZone.CurrentTimeZone;
TimeSpan ts = localZone.GetUtcOffset(msg.Date);
msg.Date = msg.Date + msg.TimeZoneOffset;
Console.WriteLine("calculated universal msg date: " +msg.Date.ToUniversalTime().ToString());
if (msg.Date.Second >= 30) // for rounding up to match outlook
{
// ... Days, hours, minutes, seconds, milliseconds.
TimeSpan span = new TimeSpan(0, 0, 0, 31, 0);
msg.Date = msg.Date + span;
}
MhtMessageFormatter mhtlFormat = new MhtMessageFormatter();
mhtlFormat.DateTimeFormat = "ddd MM/dd/yyyy hh:mm tt";
mhtlFormat.Format(msg);
MhtSaveOptions mhtSaveOptions = new MhtSaveOptions();
mhtSaveOptions.MhtFormatOptions = MhtFormatOptions.None;
mhtSaveOptions.MhtFormatOptions = mhtSaveOptions.MhtFormatOptions | MhtFormatOptions.HideExtraPrintHeader;
谢谢Lee。
在ASPOSE.Email论坛上的线程中,我们相信您的查询已经得到答案。如果您仍然发现任何问题或有混乱,则可以在各自的线程上进行进一步查询。
我与Aspose一起担任开发人员。