İşlemek için tarih ve saat, DST içerir.

GİRİŞ

Tarihler ve saatler işleyen uygulamalar yazan geliştiriciler düzenleme tarihi ve saati işleme gerçekleştiren bir veya daha fazla teknolojileri kullanabilir. Özellikle, bazı temel işletim sistemi API, C çalışma zamanı (CRT) ve Microsoft .NET Framework dönüştürmek veya aksi halde tarihleri ve saatleri değiştirmek. Bu makalede bazı tarihler ve saatler işlenmesiyle ilgili genel kavramları açıklanır. Ayrıca, bu makalede 2007 gün ışığından yararlanma saati (DST) değişiklikler etkisini belirli ürünleri ve teknolojileri açıklar.

Daha fazla bilgi

Zaman depolama ve düzenleme

Zaman damgası, tarih ve saat birleşimi belirtmek değerlerdir. Zaman damgaları genellikle işlemelidir uygulamaları o zaman damgaları Evrensel ortak Saat'e (UTC) depolar. UTC'nin avantajı evrensel olmasıdır. UTC, DST için veya yerel saat dilimi değil tabi olur. Ancak, UTC ne kolay ne de kullanıcıların çoğu için uygun değildir. UTC depolama için bariz seçim olsa da, görüntü için iyi bir seçim değil. Bu nedenle, bunlar zaman damgası kullanıcıya görüntülemeden önce çoğu uygulama UTC saati yerel saate dönüştürür. Önce tarihler ve saatler için dosyaları bir Windows NT Dosya Sistemi'ne (NTFS) dizini görüntüler örneğin, Windows Gezgini saat dilimi ve DST ayarı için UTC zaman damgası uygulanır.

-Yerel saati UTC saat dönüşümü, iki uzaklıklar uygulama olarak düşünülebilir. İlk saat dilimi uzaklığı ve ikinci DST mahsup hesabı. Bu nedenle, yerel saat UTC saati ve saat dilimi uzaklığı etkili olduğu ve ayrıca herhangi geçerli bir DST mahsup. Saat dilimi uzaklığı oldukça basittir. Bilgisayar, belirli bir saat dilimi için yapılandırılmış ve o saat dilimi UTC zamanýna vardır. Belirlemek için DST mahsup uygulanmış olup çok daha karmaşıktır. Bu faaliyetin, karmaşık ve dinamik birçok kurallarında dayanır.

Bu karmaşık DST kuralları 2007 DST ile son zamanlarda değişti. 2007'de başlayarak, Amerika Birleşik Devletleri yeni başlangıç ve bitiş tarihlerini yeni DST için kullanmaya başlamıştır. Ayrıca, diğer ülkeler ve düzenli olarak başlangıç ve bitiş tarihleri için DST saat diliminde kendi denetimi altında olan değiştirmek için hükümetler yaygındır. Aşağıdaki bölümde geliştiricilerle ilgili ürünlerde 2007 DST değişikliği etkilerini açıklar.

DST 2007 hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

DST 2007 Geliştirici ilişkili teknolojiler etkileri

Windows

Windows Update ve Microsoft Update sitesinde kullanılabilir güncelleştirmelerin düzgün ve aşağıdaki yıllar için 2007 DST değişiklikleri uygulamak Windows etkinleştirin. Bu güncelleştirmeler uygulandıktan sonra Windows bilgisayarı DST geçerken geçerli UTC saati uzaklıklara yerel saate doğru hesaplar. Uzaklık ve ağ saati ile ilgili API'ler için temel API uzaklıklar içerir.

Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

942763 numaralı Aralık 2007 toplu saat dilimi güncelleştirmesi Microsoft Windows işletim sistemleri

C çalışma zamanı modülünü (CRT)

CRT çevirileri tarih ve saat çevirileri de gerçekleştirir. Bu nedenle, CRT de 2007 DST için yeni kurallar içerecek şekilde güncelleştirilmesi gerekir. Kendi zaman TZ ortam değişkeni ayarlandığında bir temel işletim sistemi API saat çağrısı başarısız olduğunda işleme veya CRT gerçekleştirir. Güncelleştirmeler için Microsoft Visual Studio her sürümünün içerdiği büyüklükteki CRT'lerden ve Windows'un içerdiği büyüklükteki CRT'lerden için de kullanılabilir. Bu güncelleştirmelerin düzgün ABD saat diliminde DST dönüştürmeleri işlemek devam etmek CRT etkinleştirin.

.NET Framework

.NET Framework temel işletim sistemi çağrılarda dayanır. Bu nedenle, .NET Framework'ün davranışı, temel işletim sisteminin durumunu yansıtır. Ayrı bir güncelleştirme gereklidir.

Visual Studio .NET tümleşik geliştirme ortamında (IDE'ler)

Visual Studio .NET IDE'ler, 2002, 2003 ve Microsoft Visual C++, Microsoft Visual C# ve Microsoft Visual Basic 2005 sürümleri içerir. Yalnızca CRT içerdiğinden bu ürünlerin etkilenir. IDE-yönelik bir güncelleştirme gereklidir.

Visual Studio 2005 Team Foundation Server

Visual Studio 2005 Team Foundation Server için tarih ve saat dönüştürme temel işletim sistemini esas alır. Bu nedenle, Visual Studio 2005 Team Foundation Server işletim sistemi olarak aynı davranışı sergiler. Visual Studio 2005 Team Foundation Server, Microsoft SQL Server, SQL Server Reporting Services ve Windows SharePoint Services da dayanır. Bilgisayarlar ile ilgili güncelleştirmeler işletim sistemi için SQL Server ve Windows SharePoint Services için güncelleştirilmelidir. Tüm uygun güncelleştirmelerin tüm etkilenen bilgisayarlarda aynı anda uygulanmalıdır. Ayrı bir Visual Studio 2005 Team Foundation Server güncelleştirme gereklidir.

Visual Studio 2005 Team System

Visual Studio 2005 Team System, işletim sistemi, Visual Studio 2005 Team Foundation Server ve CRT ile etkilenir. Ayrı bir Visual Studio 2005 Team System güncelleştirme gereklidir.

Visual SourceSafe

2007'de Visual SourceSafe DST sorunları hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

931804 visual SourceSafe 2007 gün ışığından yararlanma saati sorunları

Visual Basic 6.0 çalışma zamanı

Visual Basic 6.0 çalışma zamanı etkilenmez.

Visual C++ 6.0

Visual C++ 6.0 artık desteklenmiyor.

Daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

Windows Vista için Windows Software Development Kit (SDK)



Bu SDK, CRT 2007 DST değişikliklerinden etkilenen bir sürümünü içerir. Bu SDK yükleme işleminin bir parçası olarak, Visual Studio 2005 CRT sürümünün yüklü CRT olmayan bilgisayarlara yükleyebilirsiniz. SDK yükleme CRT daha yeni bir sürümü zaten yüklüyse, bu yeni sürümü üzerine yazmaz. SDK kaldırıldığında, CRT en son sürümü bilgisayarınızda kalır. SDK'yı yüklemeden önce veya sonra ya da Visual Studio 2005 CRT güncelleştirmeyi yükleyebilirsiniz.

Windows Vista için Windows SDK C++ uygulamalarının özel bir parçası olarak CRT dağıtılması için Visual Studio 2005 CRT birleştirme modülleri (.msm dosyaları) kümesi de yükler. Uygulama yükleme klasörüne yeniden dağıtılabilir CRT dağıtan bir uygulama Windows Vista için Windows SDK CRT .msm dosyaları yerine Visual Studio 2005 CRT güncelleştirmedeki güncelleştirilmiş CRT dağıtmanız gerekir. Yeniden dağıtılabilir Visual Studio 2005 CRT güncelleştirmesini Windows yükleme klasörüne dağıtan bir uygulama Visual Studio 2005 CRT redistributable güncelleştirme bilgisayarlara uygulamanız gerekir.

Platform SDK için Microsoft Windows Server 2003 R2

Bu SDK, CRT 2007 DST değişikliklerinden etkilenen bir sürümünü içerir. Müşteriler, bu SDK için sürüm notları izleyin ve Visual Studio 2005 CRT güncelleştirmeler gerekli olmaları durumunda kullanın.

.NET Framework 2.0 SDK

Bu SDK, CRT 2007 DST değişikliklerinden etkilenen bir sürümünü içerir. Bu SDK yükleme işleminin bir parçası olarak, Visual Studio 2005 CRT sürümünün yüklü CRT olmayan bilgisayarlara yükleyebilirsiniz. SDK yükleme CRT daha yeni bir sürümü zaten yüklüyse, bu yeni sürümü üzerine yazmaz. SDK kaldırıldığında, CRT en son sürümü bilgisayarınızda kalır. SDK'yı yüklemeden önce veya sonra ya da Visual Studio 2005 CRT güncelleştirmeyi yükleyebilirsiniz.

Windows yerel saat dönüştürme

Kullanıcı için saat ve tarih bilgileri görüntülemeden önce uygulamaları genellikle yerel saatler için UTC saatlerini dönüştürün. Windows zaman damgası düzenleme için kullanmak üzere uygulamaları için birkaç API sağlar.
  • GetSystemTime() ve GetSystemTimeAsFileTime() işlevleri, SYSTEMTIME yapısındaki veya FILETIME yapısı geçerli UTC saati alın.
  • GetLocalTime() işlevi geçerli yerel saattir SYSTEMTIME yapısındaki alır.
  • GetTimeZoneInformation() işlevi geçerli saat dilimini ve bilgisayar için DST ayar açıklayan TIME_ZONE_INFORMATION yapısındaki alır.
  • SystemTimeToFileTime() ve FileTimeToSystemTime() işlevleri, SYSTEMTIME yapıları ve FILETIME yapıları hazırlamak.
  • FileTimeToLocalFileTime() ve LocalFileTimeToFileTime() işlevleri dönüştürmek ve bilgisayarda geçerli saat dilimini ve DST ayarı kullanarak bir FILETIME yapı UTC ve yerel saat arasındaki çevirir.
  • SystemTimeToTzSpecificLocalTime() ve TzSpecificTimeToSystemTime() işlevleri için yerel bir SYSTEMTIME yapısı UTC zaman damgası SYSTEMTIME yapısındaki dönüştürün. Bu işlevler için DST başlangıç tarihini ve bitiş tarihini belirten TIME_ZONE_INFORMATION yapısındaki kullanın. Varsayılan olarak, böyle bir yapı sağlanan geçerli DST kuralları kullanılır.
  • NetRemoteTOD() işlevi zaman sunucunun bilgileri ve ayarları kullanarak uzak bir sunucudan alır.
Not: FileTimeToLocalFileTime() ve LocalFileTimeToFileTime() işlevleri saati UTC ve yerel saat arasındaki dönüşüm geçerli saat dilimi bilgilerini ve DST bilgileri kullanarak gerçekleştirin. Bu dönüştürme dönüştürülmekte olan zaman damgası bağımsız olarak gerçekleşir.

Bu davranış, Windows Gezgini'nde bir örneğini görmek için DST kullanılan bir saat diliminde bulunan bir bilgisayarda şu adımları izleyin.

Sistem saatini değiştirme adımları gerekli olduğunu unutmayın. Bu nedenle, bu adımları izlemeden önce bu zaman değişiklikleri tepki Takvim uygulamaları gibi tüm uygulamalar, çıkmanız gerekir.
  1. DST güne bilgisayarda tarihini değiştirir. Örneğin, tarihi 1 Temmuz 2006 için ayarlayın.
  2. Aynı bilgisayardaki bir NTFS dizini sınama.txt adlı yeni bir metin dosyası oluşturun.
  3. Dosyadaki zaman damgası gibi Windows Gezgini'nde görüntülenen dikkat edin:
    7/1/2006 3:37pm
  4. DST olmayan güne bilgisayarda tarihini değiştirir. Örneğin, tarih 1 Şubat 2007'ye ayarlayın.
  5. Windows Gezgini penceresini yenileyin.
  6. Dosyadaki zaman damgası gibi Windows Gezgini'nde görüntülenen dikkat edin:
    7/1/2006 2:37pm
Önceki örnekte, UTC zaman damgası dosyasını değiştirmez. Ancak, bilgisayarda geçerli tarih bağlı olarak zaman damgası yerel saate dönüştürmek için kullanılan kuralları değiştirin. Adım 3'te 1 Temmuz DST aralığı içinde kaldığından DST mahsup uygulandı. 1 Şubat DST aralıkta değil çünkü adım 6'da, DST uzaklık, uygulandı. Böylece dosyanın zaman damgası kesin yerel saat yerel saat gelen ve dönüştürülebilir, bu davranış oluşur.

Bu blog daha fazla bilgi için bkz:SystemTimeToTzSpecificLocalTime() yöntemi ve TzSpecificTimeToSystemTime() yöntemi kullanılarak sağlanan TIME_ZONE_INFORMATION yapısındaki saati UTC ve yerel saat dönüştürün. Saat dilimi bilgisi yok verdiyse, geçerli saat dilimi kuralları bu işlevleri kullanma ve zaman damgası için DST mahsup hesabı olup olmadığını belirlemek için DST kuralları uygulanmalıdır. Bu işlev geçerli TIME_ZONE_INFORMATION yapısındaki elde etmek için GetTimeZoneInformation() yöntemini çağırmak için eşdeğerdir.

TIME_ZONE_INFORMATION yapısındaki için DST başlangıç tarihi ve bitiş tarihi içerir. Bu nedenle, geçerli saat dilimi bilgilerini TIME_ZONE_INFORMATION yapısındaki kullandığında, TIME_ZONE_INFORMATION yapısındaki bir geçmiş yanlış bilgi tanıtabilirsiniz. Geçerli saat dilimi bilgilerini ve DST bilgilerini dönüştürülmekte olan zaman damgası yansıtmayan Bu davranış oluşabilir. Bu davranış yalnızca tarihleri ne zaman DST başlatır ve durdurur yöneten kurallar değiştiği için DST 2007 tarafından etkilenir.

Bir uygulama Bu işlevlerden tarihsel olarak doğru dönüşüm elde etmek için bu işlevler uygulama çağırdığında bir tarihsel olarak doğru TIME_ZONE_INFORMATION yapısındaki sağlamanız gerekir.

Windows dinamik saat dilimleri

Windows Vista Dinamik DST saat dilimleri tanıtır. Dinamik DST saat dilimleri, sınırları DST yıl yıl değiştirmek için destek sağlar. Bu kurallar, kayıt defterinde depolanır. Uygulama kuralları GetDynamicTimeZoneInformation() işlevini kullanarak sorgulama yapabilirsiniz.

Bilgisayarlar, özellikle burada yıllık DST sınırları önceden bilinen yerel ayarlar için daha kolay güncelleştirme dinamik saat dilimleri etkinleştirin. Vista için Windows SDK'sındaki DYNAMIC_TIME_ZONE_INFORMATION yapısı hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:

C çalışma zamanı (CRT) yerel saat dönüştürme

CRT, temel olarak, zaman damgaları çevirebilir üç mod vardır:
  • TZ ortam değişkeni ayarlanmamış, CRT Windows API'lerini çağırır ve bu makalede anlatıldığı gibi Windows davranışı sergiler.
  • CRT TZ ortam değişkeni ayarlarsanız, o ayarına göre kendi dönüştürmeleri gerçekleştirir. Bu senaryoda dönüştürme gerçekleştirirken yeni 2007 DST kuralları dikkate alır, böylece CRT güncelleştiriliyor.
  • TZ ortam değişkeni ayarlanmamış, ancak temel Windows API'leri başarısız CRT TZ ortam değişkeninin PST8PDT değerini kullanarak kendi dönüştürme geri döner.
CRT için yerel saat UTC dönüştürme için kendi mantığı içerir. Uygulamalar UTC zaman damgalarını time() işlevi gibi işlevleri elde edebilirsiniz. Bu UTC zaman damgaları time_t değerler depolanır. Localtime_s() işlevi gibi bir işlev ile yerel saat dönüştürme gerçekleştirilebilir. Localtime_s() işlevi Time.h başlık dosyasında tanımlanan bir tm yapısı doldurur. Tm yapısı TZ ortam değişkeninde tanımlanan saat dilimi ve damgası anda yürürlükte olan DST kuralları temel alır.

Not: Bu dönüştürme, Amerika Birleşik Devletleri için belirli kurallar izler.

2007 DST güncelleştirmeyi uygulamadan önce CRT ABD saat diliminde geçerli zaman damgaları doğru şekilde işler. DST 2007 güncelleştirmesini uyguladıktan sonra CRT hem geçmişteki ve gelecekteki ABD tarihler de işler. Güncelleştirmeleri CRT için "Başvurular" bölümünde listelenir.

.NET Framework yerel saat dönüştürme

.NET Framework, depolamak ve zaman damgası dönüştürmek sınıflarını içerir. Bu sınıflar, DateTime sınıfı, saat dilimi sınıfı, TimeSpan sınıfının ve DateTimeKind sınıf içerir. Daha önce belirtildiği gibi bu sınıflar öncelikle temel platform uygulamasına bağlıdır. Bu sınıflar temel işletim sistemi API aynı davranışı sergiler.

Bir süre sınıfları ve .NET Framework tarih sınıfların ilginç davranış görüntülediği zaman damgası istenen miktarda Ofset işlevleri ile ilgilidir. Örneğin, AddHours() işlev, AddMinutes() işlevinin ve DateTime sınıfı AddSeconds() işlevinde düşünün. Yalnızca bu işlevleri ve benzer biçimde adlandırılmış işlevler, zaman damgası tarafından talep edilen tutar bakmadan DST ayarlarını artırın. Bu davranış, arka plandaki UTC zaman damgası üzerinde basit aritmetik görülebilir. Ancak, bu davranış içine veya dışına DST geçirmek zaman damgası eklenmesine neden olduğunda için beklenmeyen sonuçlar neden olabilir. Bu davranış, 2007 DST değişiklikleri için bir ilgisi yoktur.

Öneriler

Aşağıdaki öneriler, geliştiricilerin 2007 DST etkisini en aza indirmek ve genel tarih ve saati işleme geliştirmek yardımcı olabilir.
  • Atomik bir 2007 DST güncelleştirmelerini yükleme için planlamalısınız. Tüm planlı 2007 DST güncelleştirmelerini kapanışı zamanında birbirine olabildiğince uygulanmalıdır. Güncelleştirilmiş bir bilgisayarda henüz güncelleştirilmemiş bir bilgisayarla iletişim kurmak için SQL sorguları veya Web Hizmetleri gibi yöntemleri kullanmaya çalışırsa, çeviri hataları oluşabilir. Benzer şekilde, tek bir bilgisayarda Windows update ve CRT güncelleştirme gibi iki veya daha fazla güncelleştirme gerektiriyorsa, aynı zamanda güncelleştirmeleri uygulanmalıdır.
  • UTC zaman damgaları tarihsel olarak doğru. Bu genellikle dönüştürme işlemiyle ilgili uygulamaların çoğu yerel saat olur. Uygulamalar her zaman UTC zaman damgaları depolamanız gerekir. Saat dilimi bilgileri ve DST görüntüleme amaçları için yerel saat dönüştürme gerektirir. Bu bilgileri çeşitli kaynaklardan gelebilir:
    • Uygulama, geçerli saat dilimini ve DST ayar dönüştürme için kullanabilir. Geçerli saat dilimini ve DST ayar değil geçerli zaman damgası zamanında olsaydı bu dönüştürme bir yanlış bilgi tanıtabilirsiniz.
    • Uygulama önceden doğru saat dilimi bilgilerini ve DST yanı sıra UTC zaman damgası bilgilerini depolayabilir.
    • Dinamik saat dilimleri kullanılabilir olduğunda, uygulama dinamik saat dilimleri hangi saat dilimi bilgileri belirli bir UTC zaman damgası uygulanması gerektiğini belirlemek için kullanabilirsiniz. Dinamik saat dilimi bilgileri belirli bir zaman damgası ve belirli bir saat dilimi için kullanılabilir olduğunda bu seçenek kullanılabilir.
    • Uygulamanın yerel zaman damgası ve UTC zaman damgası depolayabilir. Bu yöntem, gelecekteki dönüştürmeye gerek engeller.
  • Zaman damgası ile ilgilenme bilgisayarları arasındaki tüm iletişim UTC zaman damgaları kullanmanız gerekir. Bu dolaylı olarak her iki bilgisayar aynı UTC bağlam bilgilerini sağlar.
  • Bir uygulama tarihleri yapabiliyorsa, sınamada tarihleri işlenme yöntemini dikkatli olmanız gerekir. Zaman bilgisi görüntülenen tarihleri genellikle 12: 00'te ilgili tarih, zaman damgası olarak depolanır. Bu nedenle, saat 11:00 PM önceki gün için kaydırılacağı uzaklık, zaman damgası saat bölümü'nde kapalı birer hata yürürlülük tarihi kapalı tek bir sonuç çıkarabilir.

Başvurular

DST 2007 Microsoft Portalı hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:http://support.microsoft.com/gp/cp_dstdaha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:

942763 numaralı Aralık 2007 toplu saat dilimi güncelleştirmesi Microsoft Windows işletim sistemleri

931975 SQL Server 2005 ve SQL Server 2000 için gün ışığından yararlanma saati değişiklikleri 2007'de hazırlamak nasıl

931804 visual SourceSafe 2007 gün ışığından yararlanma saati sorunları

Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:C çalışma zamanı (CRT) 2007 DST güncelleştirmelerini edinmek için Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
932305 düzeltme: Visual C++ .NET 2002 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi TZ ortam değişkeni sorunu

932304 düzeltme: Visual C++ .NET 2002 Service Pack 1 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi TZ ortam değişkeni sorunu

932299 düzeltme: Visual C++ .NET 2003 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi TZ ortam değişkeni sorunu

932298 düzeltme: Visual C++ .NET 2003 Service Pack 1 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi TZ ortam değişkeni sorunu

932392 düzeltme: TZ ortam değişkeni için Visual C++ .NET 2005 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi

932391 düzeltme: TZ ortam değişkeni için Visual C++ .NET 2005 Service Pack 1 C çalışma zamanı gün ışığından yararlanma saati 2007 güncelleştirmesi

932590 düzeltme: TZ ortam değişkenini kullanan Windows tabanlı uygulamalar, DST değişiklikleri nedeniyle beklendiği gibi çalışmayabilir

Özellikler

Makale No: 932955 - Son İnceleme: 24 Şub 2017 - Düzeltme: 1

Geri bildirim