2016-03-25 21 views
1

SQL veritabanımızdan olayları alan ve kullanıcıların Outlook veya Google Takvimindeki internet takvimlerine abone olabilmeleri için bir iCal dosyası oluşturan bazı DDay iCal kodlarım var. Farklı bir saat dilimindeki bir kullanıcının takvimlerine senkronize etmesi durumunda, saati yanlış görüntülediği durumlar dışında iyi çalışıyor. Web sunucumuz merkezi zamandadır, bu nedenle doğudaki bir kullanıcı, gerçek olay saatinden 1 saat önce zamanı görecektir. Temel olarak iCal'in zaman dilimlerini yok saymasını ve veritabanımda göründüğü gibi başlangıç ​​ve bitiş zamanlarını göstermesini istiyorum. Bunun imkansız olacağını ve zaman dönüşümünü kendimiz yapmak zorunda kalacağımızı hissediyorum.Outlook 2010'da DDay iCal değişen süresi

Dim iCal As iCalendar = New iCalendar() 
Dim evt As [Event] 
iCal.AddLocalTimeZone() 
Dim dtStart As DateTime = dtr_SQL("StartDate").ToString() 
Dim dtEnd As DateTime = dtr_SQL("EndDate").ToString() 
Dim startDate As iCalDateTime = dtStart.ToUniversalTime() 
Dim endDate As iCalDateTime = dtEnd.ToUniversalTime() 
evt = iCal.Create(Of [Event])() 
evt.Start = startDate 
evt.Start.HasTime = True 
evt.Start.IsUniversalTime = True 
evt.End = endDate 
evt.End.HasTime = True 
evt.End.IsUniversalTime = True 

cevap

0

Bir SQL veritabanından zaman alıyor olduğunuzdan, çektiğiniz saatle ilişkili bir zaman diliminin olması olası değildir. Doğu Standart Saati yapan bir kullanıcı kodu yürütülüyorsa

Dim centralTime As New Date(dtStart) 'using the datetime you pulled from your database 
Dim centralZoneId As String = "Central Standard Time" 
Dim centralZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(centralZoneId) 
Dim UTCTime as Date = TimeZoneInfo.ConvertTimeToUtc(centralTime, centralZone) 

Şimdi, zaman veritabanından okunacak: Burada gösterildiği gibi büyük olasılıkla "Merkezi Standart Zamanı" adlı çekerek zaman ataması gerekiyor CST olarak (probleminizin nereden geldiği EST değil) ve daha sonra UTC'ye dönüştürülür. Bu zamanlarla ilişkili açık bir zaman dilimi ile, Outlook ve Google, takvim randevularınızı farklı saat dilimlerindeki kullanıcılar tarafından okunduğunda geri kalanını halledebilmelidir.

Umarım bu yardımcı olur!

+0

Bu işe yaramıyor. Bilgisayarımı Doğu Standart Saati olarak değiştiririm, Internet takvimini Outlook ile eşleştiririm ve kodu çalıştırdığımda hala Outlook'un içinde bir saatin geçmesine neden oluyor. Saat dilimlerini ayarlamayı denedim ve asla işe yaramıyor. – GS442

+0

Yanlış anlaşılmış olabilir - kullanıcılar yazdığınız herhangi bir kodu çalıştırıyor mu, yoksa doğrudan kodunuz tarafından işlenmiş bir Outlook randevusu (veya Google Takvim randevusu) üzerinden mi erişiyorlar? – Dustin

+0

Bu, Outlook veya Google Takvim ile senkronize edilen canlı bir iCal özet akışı olması anlamına gelir. Kullanıcılar Outlook'taki İnternet Takvimine abone olduğunda, olası değişiklikleri almak için sayfayı her 5 dakikada bir kontrol eder. – GS442