0

現在、国から現在の時刻を必要とするアプリケーションを作成しています。
私は別の国の緯度と経度を持っています。

次のリンクを使用して現在の時刻を取得しています

http://api.geonames.org/timezone?lat=21.7679&lng=78.8718&username=demo
(デモのユーザー名はデフォルトであり、クエリ制限があるためテスト用にのみ使用されます)

現在の時刻を取得しましたが、サマータイムがオンになっています。その API は正しい時間を提供してくれますか? そうでない場合、どうすれば現在の時刻を取得できますか。

一部の API では、earthtool (実装されていない DST) のような現在の時刻を取得します。しかし、現在DSTが実装されていないため、テストできませんでした。この場合、どのようにテストできますか?

C# 4.0 を使用して .NET でアプリケーションを作成しています

他の API がある場合は教えてください。ただし、GeoNames API が最優先です。

4

1 に答える 1

2

それが現在の現地時間を反映していなかったら、私は非常に驚くでしょう. サンパウロ (現在 DST を観察している) の結果は、次のように一致しているようです。

<geonames>
  <timezone tzversion="tzdata2012f">
  <countryCode>BR</countryCode>
  <countryName>Brazil</countryName>
  <lat>-23.0</lat>
  <lng>-46.0</lng>
  <timezoneId>America/Sao_Paulo</timezoneId>
  <dstOffset>-3.0</dstOffset>
  <gmtOffset>-2.0</gmtOffset>
  <rawOffset>-3.0</rawOffset>
  <time>2012-12-17 10:48</time>
  <sunrise>2012-12-17 06:14</sunrise>
  <sunset>2012-12-17 19:47</sunset>
  </timezone>
</geonames>

ただし、GeoNames API を使用してタイム ゾーン ID を取得し、そのタイム ゾーンに関するすべての処理にNoda Timeを使用するという別の方法もあります。(免責事項: 私は Noda Time の主な開発者です。)

BCL のTimeZoneInfoクラスを直接使用することはできません。これは、GeoNames が提供する TZDB のタイム ゾーン ID (「Asia/Kolkata」など) をサポートしていないためです。マッピング ( CLDRが提供する) を使用することもできますが、私の経験では、Windows のタイム ゾーン情報には気がかりな点がいくつかあります。

現在の時刻を知りたいだけなら、GeoNames で十分でしょう -

于 2012-12-17T12:44:31.883 に答える