অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক ব্যবহার করে কোনও স্থান থেকে কীভাবে সময় অঞ্চল পাবেন?


310

কোনও অবস্থান থেকে সময় অঞ্চল সমাধানের বিষয়ে স্ট্যাকওভারফ্লোতে প্রচুর প্রশ্ন রয়েছে। এই সম্প্রদায়ের উইকিটি বৈধ প্রতিক্রিয়াগুলির সমস্ত একত্রিত করার একটি প্রয়াস।

দয়া করে আমার উত্তর আপডেট করুন, বা আপনার নিজের মতো ফিট হিসাবে যুক্ত করুন।

প্রশ্ন
একটি অবস্থানের অক্ষাংশ এবং দ্রাঘিমাংশ দেওয়া, কীভাবে কেউ জানতে পারে যে সেই স্থানে কী সময় অঞ্চল কার্যকর হয়?

বেশিরভাগ ক্ষেত্রে, আমরা একটি আইএএনএ / ওলসন টাইম জোন আইডি খুঁজছি, যদিও কিছু পরিষেবা কেবল একটি ইউটিসি অফসেট, বা অন্য কোনও সময় অঞ্চল শনাক্তকারীকে ফিরিয়ে দিতে পারে। অনুগ্রহ করে পড়ুন টাইমজোন ট্যাগ তথ্য বিস্তারিত জানার জন্য।


2
একটি জিনিস আমি লক্ষ্য করেছি যে সময় অঞ্চল নির্ধারণের সময় কোনও ইউটিসি টাইমস্ট্যাম্পের প্রয়োজনীয়তার অভাব। উদাহরণস্বরূপ, লন্ডনে একটি দীর্ঘ / ল্যাথ সময় অঞ্চলটি GMT বা BST (ব্রিটিশ গ্রীষ্মকালীন সময় / দিবালোকের সঞ্চয়) আবহাওয়া নির্ধারণের জন্য যথেষ্ট নয়। সুতরাং অবশ্যই সঠিক সময় অঞ্চল নির্ধারণের জন্য আপনার ল্যাট, লম্বা এবং একটি ইউটিসি টাইমস্ট্যাম্প দরকার।
মাইকেল জলপ্রপাত

4
@ মিশেলওয়াটারফল - আপনি জিএমটি (ইউটিসি +0000) বা বিএসটি (ইউটিসি + 0100) আছেন কিনা তা নির্ধারণ করার জন্য - হ্যাঁ, আপনি একেবারে সঠিক। তবে সেগুলি টাইম জোনের অফসেটস , সময় অঞ্চল শনাক্তকারী নয়। উভয়ই "Europe/London"আইএএনএ টাইম জোন ডাটাবেসের একই সময় অঞ্চল শনাক্তকারী দ্বারা আচ্ছাদিত ।
ম্যাট জনসন-পিন্ট

আহ ঠিক আছে, এবং দিবালোক সঞ্চয় অফসেট যোগ করা হবে (যদি প্রয়োজন হয়) একবার নির্দিষ্ট সময় অঞ্চল শনাক্তকারীর সাথে একটি সময় রেন্ডারিং করে?
মাইকেল জলপ্রপাত

@ মিশেল - এটি নির্দিষ্ট প্রয়োগের উপর নির্ভর করে তবে সাধারণত, হ্যাঁ।
ম্যাট জনসন-পিন্ট

1
এটি এখনও ইউটিসি টাইমস্ট্যাম্প প্রয়োজন হতে পারে। উদাহরণস্বরূপ, রাশিয়া গত 6 বছরের জন্য 4 বারের সময়সীমার সীমানা পরিবর্তন করে। en.wikipedia.org/wiki/Time_in_Russia
Arnial

উত্তর:


421

সময় অঞ্চল অবস্থান ওয়েব পরিষেবা

কাঁচা সময় অঞ্চল সীমা তথ্য

  • টাইমজোন সীমানা নির্মাতা - ওপেনস্ট্রিটম্যাপস মানচিত্রের ডেটা থেকে টাইম জোনের শেফফাইলগুলি তৈরি করে। উপকূলরেখার নিকটে আঞ্চলিক জলের অন্তর্ভুক্ত।

নিম্নলিখিত প্রকল্পগুলি আগে সময় অঞ্চল সীমানা ডেটা উত্স ছিল, কিন্তু সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় না।

  • tz_world - এরিক মুলার থেকে প্রাপ্ত আসল ফাইল
  • whereonearth-সময় অঞ্চল - জিওজেএসএন সংস্করণে ডাব্লুওইডিবি ডেটা একত্রিত হয়েছে

সময় অঞ্চল জিওলোকেশন অফলাইন বাস্তবায়ন

বাস্তবায়নগুলি যা টাইমজোন সীমানা নির্মাতার ডেটা ব্যবহার করে

পুরানো tz_world ডেটা ব্যবহার করে এমন প্রয়োগগুলি

গ্রন্থাগারগুলি যা ওয়েব পরিষেবাগুলির মধ্যে একটির কাছে কল করে

  • সময় অঞ্চল - রুবি রত্ন যা জিওনামকে ডাকে
  • জাভা বা। নেট থেকে কল করার জন্য এস্কিওর নিজস্ব লাইব্রেরি রয়েছে
  • জিওনামের প্রায় সব কিছুর জন্য ক্লায়েন্ট লাইব্রেরি রয়েছে

স্ব-হোস্টেড ওয়েব পরিষেবাদি

অন্যান্য ধারণা

আপনি যদি অন্য কারও সম্পর্কে জানেন তবে এই তালিকাটি আপডেট করুন

এছাড়াও, নোট করুন যে নিকটতম-শহর পদ্ধতির "সঠিক" ফলাফল নাও পাওয়া যায়, কেবল একটি আনুমানিক।

উইন্ডোজ জোনে রূপান্তর

তালিকাভুক্ত বেশিরভাগ পদ্ধতি একটি আইএএনএ সময় অঞ্চল আইডি ফিরিয়ে দেবে। TimeZoneInfo.NET ক্লাসের সাথে ব্যবহারের জন্য যদি আপনাকে একটি উইন্ডোজ টাইম জোনে রূপান্তর করতে হয় তবে টাইমজোনকভার্টার লাইব্রেরিটি ব্যবহার করুন ।

জোন.ট্যাব ব্যবহার করবেন না

TZ ডাটাবেসের নামক কোনো ফাইল অন্তর্ভুক্ত zone.tab। এই ফাইলটি প্রাথমিকভাবে কোনও ব্যবহারকারীর বাছাইয়ের জন্য সময় অঞ্চলগুলির তালিকা উপস্থাপন করতে ব্যবহৃত হয়। এটিতে প্রতিটি সময় অঞ্চলের রেফারেন্টের জন্য অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক অন্তর্ভুক্ত। এটি এই পয়েন্টগুলি হাইলাইট করে একটি মানচিত্র তৈরি করার অনুমতি দেয়। উদাহরণস্বরূপ, মুহূর্ত-সময় অঞ্চল হোম পৃষ্ঠাতে প্রদর্শিত ইন্টারেক্টিভ মানচিত্র দেখুন ।

অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্কগুলি থেকে সময় অঞ্চলটি সমাধান করার জন্য এই ডেটাটি ব্যবহার করার জন্য এটি লোভনীয় হতে পারে তবে বিবেচনা করুন যে এগুলি পয়েন্ট - সীমানা নয়। সবচেয়ে ভাল একটিটি হতে পারে নিকটতম বিন্দুটি নির্ধারণ করা , যা অনেক ক্ষেত্রে সঠিক পয়েন্ট হতে পারে না।

নিম্নলিখিত উদাহরণ বিবেচনা করুন:

                            সময় অঞ্চল উদাহরণ শিল্প

দুটি স্কোয়ার বিভিন্ন টাইম অঞ্চলকে প্রতিনিধিত্ব করে, যেখানে প্রতিটি স্কোয়ারের কালো বিন্দুটি রেফারেন্স লোকেশন, যেমন জোন.ট্যাব-এ পাওয়া যাবে। নীল বিন্দুটি সেই স্থানটি উপস্থাপন করে যা আমরা একটি সময় অঞ্চল অনুসন্ধান করার চেষ্টা করছি। স্পষ্টতই, এই অবস্থানটি বামদিকে কমলা অঞ্চলের মধ্যে রয়েছে, তবে আমরা যদি কেবলমাত্র রেফারেন্স পয়েন্টের নিকটতম দূরত্বের দিকে তাকাই তবে এটি ডানদিকে সবুজ অঞ্চলকে সমাধান করবে।


1
জিওনেমস আমার যা প্রয়োজন তার জন্য আসলে নিখুঁত। ধন্যবাদ!
লুক

1
@ ম্যাট যাইহোক, আমি যেমন বুঝতে পেরেছি, এই মুহূর্তে এমন কোনও অফলাইন ডাটাবেস নেই যা টাইমজোন তথ্য সরবরাহ করবে এবং অবস্থানের স্থানাঙ্কের উপর ভিত্তি করে ইউটিসি থেকে অফসেট দেবে?
মার্টিন

@ ম্যাটজাহনসন কীভাবে আমি জিওনাম ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারি
এরম

এটি একটি দুর্দান্ত তালিকা, আপনাকে ধন্যবাদ! গুগল সুস্পষ্ট পছন্দ মত দেখাচ্ছে, কিন্তু আমি তারা অবাক হয়ে আমাকে জানায় যে লন্ডন জিএমটি-তে রয়েছে, যখন বাস্তবে এটি বিএসটি-তে রয়েছে ST নিউ ইয়র্কের ক্ষেত্রে এটি গ্রীষ্মের সঠিক সামঞ্জস্য ছিল।
লুইস

8
এই নতুন গুগল এপিআই রেট চাঁদাবাজি। 7/18 হিসাবে $ 1 এর জন্য 200 অনুরোধ। এটি 10 ​​এক্স বৃদ্ধি।
ক্রিস লুকিক


8

আমরা টেলিপোর্টে সবেমাত্র আমাদের এপিআই খুলতে শুরু করেছি এবং একটি ইউজকেস স্থানাঙ্কগুলির জন্য টিজেডের তথ্যও প্রকাশ করছে।

উদাহরণস্বরূপ, কেউ নিম্নলিখিত পদ্ধতিতে স্থানাঙ্কের জন্য আমাদের উপলব্ধ সমস্ত টিজেডের তথ্যের জন্য অনুরোধ করতে পারেন:

curl -s https://api.teleport.org/api/locations/59.4372,24.7453/?embed=location:nearest-cities/location:nearest-city/city:timezone/tz:offsets-now | jq '._embedded."location:nearest-cities"[0]._embedded."location:nearest-city"._embedded."city:timezone"'

এটি নিম্নলিখিত ফিরে আসবে

{
  "_embedded": {
    "tz:offsets-now": {
      "_links": {
        "self": {
          "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/?date=2015-09-07T11%3A20%3A09Z"
        }
      },
      "base_offset_min": 120,
      "dst_offset_min": 60,
      "end_time": "2015-10-25T01:00:00Z",
      "short_name": "EEST",
      "total_offset_min": 180,
      "transition_time": "2015-03-29T01:00:00Z"
    }
  },
  "_links": {
    "self": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/"
    },
    "tz:offsets": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/{?date}",
      "templated": true
    },
    "tz:offsets-now": {
      "href": "https://api.teleport.org/api/timezones/iana:Europe%2FTallinn/offsets/?date=2015-09-07T11%3A20%3A09Z"
    }
  },
  "iana_name": "Europe/Tallinn"
}

উদাহরণস্বরূপ আমি JSON পার্সিংয়ের জন্য .jjq ব্যবহার করেছি


2
ভাগ করে নেওয়ার জন্য ধন্যবাদ. এটি কি নিকটতম-শহর পদ্ধতির কাজ করছে, বা আপনি পয়েন্ট-ইন-বহুভুজ পদ্ধতির ব্যবহার করছেন? (উপরের দুটি স্কোয়ারের সাথে আমার চিত্রটি দেখুন))
ম্যাট জনসন-পিন্ট

3

এখানে আপনি কীভাবে গুগলের স্ক্রিপ্ট সম্পাদকটি টাইমজোননেম এবং টাইমজোনআইডি পেতে একটি শিটের ভিতরে রাখতে পারেন।

পদক্ষেপ 1. গুগলের টাইমজোন এপিআইয়ের জন্য একটি এপিআই কী পান

পদক্ষেপ 2. একটি নতুন শিট তৈরি করুন। 'সরঞ্জামগুলি' মেনুর নীচে 'স্ক্রিপ্ট সম্পাদক' ক্লিক করুন। নিম্নলিখিত কোড যুক্ত করুন:

function getTimezone(lat, long) {  
  var apiKey = 'INSERTAPIKEYHERE'
  var url = 'https://maps.googleapis.com/maps/api/timezone/json?location=' + lat + ',' + long + '&timestamp=1331161200&key=' + apiKey 
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  return data["timeZoneName"];
}

পদক্ষেপ 3. আপনার getTimezone()ফাংশনটি সংরক্ষণ করুন এবং প্রকাশ করুন এবং উপরের চিত্রটিতে প্রদর্শিত হিসাবে এটি ব্যবহার করুন।


2

আপনি geolocator.js ব্যবহার করতে পারেন সহজেই সময় অঞ্চল এবং আরও বেশি কিছু পাওয়ার জন্য ...

এটি এমন গুগল এপিআই ব্যবহার করে যাতে একটি কী প্রয়োজন। সুতরাং, প্রথমে আপনি জিওলোকেটর কনফিগার করুন:

geolocator.config({
    language: "en",
    google: {
        version: "3",
        key: "YOUR-GOOGLE-API-KEY"
    }
});

আপনার যদি স্থানাঙ্ক থাকে টাইমজোন পান:

geolocator.getTimeZone(options, function (err, timezone) {
    console.log(err || timezone);
});

উদাহরণ আউটপুট:

{
    id: "Europe/Paris",
    name: "Central European Standard Time",
    abbr: "CEST",
    dstOffset: 0,
    rawOffset: 3600,
    timestamp: 1455733120
}

তারপরে টাইমজোন এবং আরও অনেক কিছু পান

আপনার যদি স্থানাঙ্ক না থাকে তবে আপনি প্রথমে ব্যবহারকারীর অবস্থানটি সনাক্ত করতে পারেন।

নীচের উদাহরণগুলি স্থানাঙ্কগুলি পেতে প্রথমে HTML5 ভূ-স্থান API চেষ্টা করবে। যদি এটি ব্যর্থ হয় বা প্রত্যাখ্যাত হয় তবে এটি জিও-আইপি লুক-আপের মাধ্যমে স্থানাঙ্কগুলি পাবে। শেষ অবধি, এটি টাইমজোন এবং আরও অনেক কিছু পাবেন ...

var options = {
    enableHighAccuracy: true,
    timeout: 6000,
    maximumAge: 0,
    desiredAccuracy: 30,
    fallbackToIP: true, // if HTML5 fails or rejected
    addressLookup: true, // this will get full address information
    timezone: true,
    map: "my-map" // this will even create a map for you
};
geolocator.locate(options, function (err, location) {
    console.log(err || location);
});

উদাহরণ আউটপুট:

{
    coords: {
        latitude: 37.4224764,
        longitude: -122.0842499,
        accuracy: 30,
        altitude: null,
        altitudeAccuracy: null,
        heading: null,
        speed: null
    },
    address: {
        commonName: "",
        street: "Amphitheatre Pkwy",
        route: "Amphitheatre Pkwy",
        streetNumber: "1600",
        neighborhood: "",
        town: "",
        city: "Mountain View",
        region: "Santa Clara County",
        state: "California",
        stateCode: "CA",
        postalCode: "94043",
        country: "United States",
        countryCode: "US"
    },
    formattedAddress: "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
    type: "ROOFTOP",
    placeId: "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
    timezone: {
        id: "America/Los_Angeles",
        name: "Pacific Standard Time",
        abbr: "PST",
        dstOffset: 0,
        rawOffset: -28800
    },
    flag: "//cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/flags/4x3/us.svg",
    map: {
        element: HTMLElement,
        instance: Object, // google.maps.Map
        marker: Object, // google.maps.Marker
        infoWindow: Object, // google.maps.InfoWindow
        options: Object // map options
    },
    timestamp: 1456795956380
}

1

https://en.wikipedia.org/wiki/Great-circle_distance

এবং এখানে JSON ডেটা ব্যবহার করে একটি ভাল বাস্তবায়ন: https://github.com/agap/llttz

public TimeZone nearestTimeZone(Location node) {
    double bestDistance = Double.MAX_VALUE;
    Location bestGuess = timeZones.get(0);

    for (Location current : timeZones.subList(1, timeZones.size())) {
        double newDistance = distanceInKilometers(node, current);

        if (newDistance < bestDistance) {
            bestDistance = newDistance;
            bestGuess = current;
        }
    }

    return java.util.TimeZone.getTimeZone(bestGuess.getZone());
}

  protected double distanceInKilometers(final double latFrom, final double lonFrom, final double latTo, final double lonTo) {
        final double meridianLength = 111.1;
        return meridianLength * centralAngle(latFrom, lonFrom, latTo, lonTo);
    }

    protected double centralAngle(final Location from, final Location to) {
        return centralAngle(from.getLatitude(), from.getLongitude(), to.getLatitude(), to.getLongitude());
    }

    protected double centralAngle(final double latFrom, final double lonFrom, final double latTo, final double lonTo) {
        final double latFromRad = toRadians(latFrom),
                lonFromRad = toRadians(lonFrom),
                latToRad   = toRadians(latTo),
                lonToRad   = toRadians(lonTo);

        final double centralAngle = toDegrees(acos(sin(latFromRad) * sin(latToRad) + cos(latFromRad) * cos(latToRad) * cos(lonToRad - lonFromRad)));

        return centralAngle <= 180.0 ? centralAngle : (360.0 - centralAngle);
    }

    protected double distanceInKilometers(final Location from, final Location to) {
        return distanceInKilometers(from.getLatitude(), from.getLongitude(), to.getLatitude(), to.getLongitude());
    }
}

আপনি কি লিঙ্কগুলি থেকে কিছু সামগ্রী যুক্ত করতে পারেন?
রবার্ট

0

বর্তমান এনটিপি সময় ক্লায়েন্টের সাথে জাভা থেকে গুগল টাইম অঞ্চল এপিআই ব্যবহারের জন্য এই কোডটি ব্যবহার করে দেখুন এবং ইউটিসি_ডেটটাইম_ফর্ম_টাইম স্ট্যাম্প রূপান্তর করুন:

String get_xml_server_reponse(String server_url){

    URL xml_server = null;

    String xmltext = "";

    InputStream input;


    try {
        xml_server = new URL(server_url);


        try {
            input = xml_server.openConnection().getInputStream();


            final BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            final StringBuilder sBuf = new StringBuilder();

            String line = null;
            try {
                while ((line = reader.readLine()) != null) 
                {
                    sBuf.append(line);
                }
               } 
            catch (IOException e) 
              {
                    Log.e(e.getMessage(), "XML parser, stream2string 1");
              } 
            finally {
                try {
                    input.close();
                    }
                catch (IOException e) 
                {
                    Log.e(e.getMessage(), "XML parser, stream2string 2");
                }
            }

            xmltext =  sBuf.toString();

        } catch (IOException e1) {

                e1.printStackTrace();
            }


        } catch (MalformedURLException e1) {

          e1.printStackTrace();
        }

     return  xmltext;

  }     


 private String get_UTC_Datetime_from_timestamp(long timeStamp){

    try{

        Calendar cal = Calendar.getInstance();
        TimeZone tz = cal.getTimeZone();

        int tzt = tz.getOffset(System.currentTimeMillis());

        timeStamp -= tzt;

        // DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.getDefault());
        DateFormat sdf = new SimpleDateFormat();
        Date netDate = (new Date(timeStamp));
        return sdf.format(netDate);
    }
    catch(Exception ex){
        return "";
     }
    } 

 class NTP_UTC_Time
 {
     private static final String TAG = "SntpClient";

     private static final int RECEIVE_TIME_OFFSET = 32;
     private static final int TRANSMIT_TIME_OFFSET = 40;
     private static final int NTP_PACKET_SIZE = 48;

     private static final int NTP_PORT = 123;
     private static final int NTP_MODE_CLIENT = 3;
     private static final int NTP_VERSION = 3;

     // Number of seconds between Jan 1, 1900 and Jan 1, 1970
     // 70 years plus 17 leap days
     private static final long OFFSET_1900_TO_1970 = ((365L * 70L) + 17L) * 24L * 60L * 60L;

     private long mNtpTime;

     public boolean requestTime(String host, int timeout) {
         try {
             DatagramSocket socket = new DatagramSocket();
             socket.setSoTimeout(timeout);
             InetAddress address = InetAddress.getByName(host);
             byte[] buffer = new byte[NTP_PACKET_SIZE];
             DatagramPacket request = new DatagramPacket(buffer, buffer.length, address, NTP_PORT);

             buffer[0] = NTP_MODE_CLIENT | (NTP_VERSION << 3);

             writeTimeStamp(buffer, TRANSMIT_TIME_OFFSET);

             socket.send(request);

             // read the response
             DatagramPacket response = new DatagramPacket(buffer, buffer.length);
             socket.receive(response);          
             socket.close();

             mNtpTime = readTimeStamp(buffer, RECEIVE_TIME_OFFSET);            
         } catch (Exception e) {
           //  if (Config.LOGD) Log.d(TAG, "request time failed: " + e);
             return false;
         }

         return true;
     }


     public long getNtpTime() {
         return mNtpTime;
     }


     /**
      * Reads an unsigned 32 bit big endian number from the given offset in the buffer.
      */
     private long read32(byte[] buffer, int offset) {
         byte b0 = buffer[offset];
         byte b1 = buffer[offset+1];
         byte b2 = buffer[offset+2];
         byte b3 = buffer[offset+3];

         // convert signed bytes to unsigned values
         int i0 = ((b0 & 0x80) == 0x80 ? (b0 & 0x7F) + 0x80 : b0);
         int i1 = ((b1 & 0x80) == 0x80 ? (b1 & 0x7F) + 0x80 : b1);
         int i2 = ((b2 & 0x80) == 0x80 ? (b2 & 0x7F) + 0x80 : b2);
         int i3 = ((b3 & 0x80) == 0x80 ? (b3 & 0x7F) + 0x80 : b3);

         return ((long)i0 << 24) + ((long)i1 << 16) + ((long)i2 << 8) + (long)i3;
     }

     /**
      * Reads the NTP time stamp at the given offset in the buffer and returns 
      * it as a system time (milliseconds since January 1, 1970).
      */    
     private long readTimeStamp(byte[] buffer, int offset) {
         long seconds = read32(buffer, offset);
         long fraction = read32(buffer, offset + 4);
         return ((seconds - OFFSET_1900_TO_1970) * 1000) + ((fraction * 1000L) / 0x100000000L);        
     }

     /**
      * Writes 0 as NTP starttime stamp in the buffer. --> Then NTP returns Time OFFSET since 1900
      */    
     private void writeTimeStamp(byte[] buffer, int offset) {        
         int ofs =  offset++;

         for (int i=ofs;i<(ofs+8);i++)
           buffer[i] = (byte)(0);             
     }

 }

 String get_time_zone_time(GeoPoint gp){

        String erg = "";
        String raw_offset = "";
        String dst_offset = "";

        double Longitude = gp.getLongitudeE6()/1E6;
        double Latitude = gp.getLatitudeE6()/1E6;



        long tsLong = 0; // System.currentTimeMillis()/1000;

        NTP_UTC_Time client = new NTP_UTC_Time();

        if (client.requestTime("pool.ntp.org", 2000)) {              
          tsLong = client.getNtpTime();
        }

        if (tsLong != 0)
        {

        tsLong = tsLong  / 1000;

        // https://maps.googleapis.com/maps/api/timezone/xml?location=39.6034810,-119.6822510&timestamp=1331161200&sensor=false

        String request = "https://maps.googleapis.com/maps/api/timezone/xml?location="+Latitude+","+ Longitude+ "&timestamp="+tsLong +"&sensor=false";

        String xmltext = get_xml_server_reponse(request);

        if(xmltext.compareTo("")!= 0)
        {

         int startpos = xmltext.indexOf("<TimeZoneResponse");
         xmltext = xmltext.substring(startpos);



        XmlPullParser parser;
        try {
            parser = XmlPullParserFactory.newInstance().newPullParser();


             parser.setInput(new StringReader (xmltext));

             int eventType = parser.getEventType();  

             String tagName = "";


             while(eventType != XmlPullParser.END_DOCUMENT) {
                 switch(eventType) {

                     case XmlPullParser.START_TAG:

                           tagName = parser.getName();

                         break;


                     case XmlPullParser.TEXT :


                        if  (tagName.equalsIgnoreCase("raw_offset"))
                          if(raw_offset.compareTo("")== 0)                               
                            raw_offset = parser.getText();  

                        if  (tagName.equalsIgnoreCase("dst_offset"))
                          if(dst_offset.compareTo("")== 0)
                            dst_offset = parser.getText();  


                        break;   

                 }

                 try {
                        eventType = parser.next();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }

                }

                } catch (XmlPullParserException e) {

                    e.printStackTrace();
                    erg += e.toString();
                }

        }      

        int ro = 0;
        if(raw_offset.compareTo("")!= 0)
        { 
            float rof = str_to_float(raw_offset);
            ro = (int)rof;
        }

        int dof = 0;
        if(dst_offset.compareTo("")!= 0)
        { 
            float doff = str_to_float(dst_offset);
            dof = (int)doff;
        }

        tsLong = (tsLong + ro + dof) * 1000;



        erg = get_UTC_Datetime_from_timestamp(tsLong);
        }


  return erg;

}

এবং এটি দিয়ে ব্যবহার করুন:

GeoPoint gp = new GeoPoint(39.6034810,-119.6822510);
String Current_TimeZone_Time = get_time_zone_time(gp);

1
এটি সাধারণ কাজের জন্য অনেক কোডের মতো বলে মনে হচ্ছে। আপনি সেখানে একটি সম্পূর্ণ এনটিপি ক্লায়েন্ট পেয়েছেন, যা একটি ভাল ধারণা হতে পারে - তবে প্রয়োজন হয় না। আপনি কিছুটা পাতলা করতে পারেন দয়া করে?
ম্যাট জনসন-পিন্ট

0

ঠিক আছে এখানে সঠিক এনটিপি সময় ছাড়াই সংক্ষিপ্ত সংস্করণ রয়েছে:

String get_xml_server_reponse(String server_url){

URL xml_server = null;

String xmltext = "";

InputStream input;


try {
    xml_server = new URL(server_url);


    try {
        input = xml_server.openConnection().getInputStream();


        final BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        final StringBuilder sBuf = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) 
            {
                sBuf.append(line);
            }
           } 
        catch (IOException e) 
          {
                Log.e(e.getMessage(), "XML parser, stream2string 1");
          } 
        finally {
            try {
                input.close();
                }
            catch (IOException e) 
            {
                Log.e(e.getMessage(), "XML parser, stream2string 2");
            }
        }

        xmltext =  sBuf.toString();

    } catch (IOException e1) {

            e1.printStackTrace();
        }


    } catch (MalformedURLException e1) {

      e1.printStackTrace();
    }

 return  xmltext;

} 


long get_time_zone_time_l(GeoPoint gp){


        String raw_offset = "";
        String dst_offset = "";

        double Longitude = gp.getLongitudeE6()/1E6;
        double Latitude = gp.getLatitudeE6()/1E6;

        long tsLong = System.currentTimeMillis()/1000;


        if (tsLong != 0)
        {

        // https://maps.googleapis.com/maps/api/timezone/xml?location=39.6034810,-119.6822510&timestamp=1331161200&sensor=false

        String request = "https://maps.googleapis.com/maps/api/timezone/xml?location="+Latitude+","+ Longitude+ "&timestamp="+tsLong +"&sensor=false";

        String xmltext = get_xml_server_reponse(request);

        if(xmltext.compareTo("")!= 0)
        {

         int startpos = xmltext.indexOf("<TimeZoneResponse");
         xmltext = xmltext.substring(startpos);



        XmlPullParser parser;
        try {
            parser = XmlPullParserFactory.newInstance().newPullParser();


             parser.setInput(new StringReader (xmltext));

             int eventType = parser.getEventType();  

             String tagName = "";


             while(eventType != XmlPullParser.END_DOCUMENT) {
                 switch(eventType) {

                     case XmlPullParser.START_TAG:

                           tagName = parser.getName();

                         break;


                     case XmlPullParser.TEXT :


                        if  (tagName.equalsIgnoreCase("raw_offset"))
                          if(raw_offset.compareTo("")== 0)                               
                            raw_offset = parser.getText();  

                        if  (tagName.equalsIgnoreCase("dst_offset"))
                          if(dst_offset.compareTo("")== 0)
                            dst_offset = parser.getText();  


                        break;   

                 }

                 try {
                        eventType = parser.next();
                    } catch (IOException e) {

                        e.printStackTrace();
                    }

                }

                } catch (XmlPullParserException e) {

                    e.printStackTrace();
                    erg += e.toString();
                }

        }      

        int ro = 0;
        if(raw_offset.compareTo("")!= 0)
        { 
            float rof = str_to_float(raw_offset);
            ro = (int)rof;
        }

        int dof = 0;
        if(dst_offset.compareTo("")!= 0)
        { 
            float doff = str_to_float(dst_offset);
            dof = (int)doff;
        }

        tsLong = (tsLong + ro + dof) * 1000;


        }


  return tsLong;

}

এবং এটি দিয়ে ব্যবহার করুন:

GeoPoint gp = new GeoPoint(39.6034810,-119.6822510);
long Current_TimeZone_Time_l = get_time_zone_time_l(gp);

0

আপনি যদি জিওনস্ট্রি ব্যবহার করতে চান তবে এই কোডটি ব্যবহার করুন। (তবে জিওনস্ট্রেশন কখনও কখনও খুব ধীর হয়)

String get_time_zone_time_geonames(GeoPoint gp){


        String erg = "";

        double Longitude = gp.getLongitudeE6()/1E6;
        double Latitude = gp.getLatitudeE6()/1E6;



        String request = "http://ws.geonames.org/timezone?lat="+Latitude+"&lng="+ Longitude+ "&style=full";

        URL time_zone_time = null;

        InputStream input;
       // final StringBuilder sBuf = new StringBuilder();


        try {
            time_zone_time = new URL(request);


        try {
            input = time_zone_time.openConnection().getInputStream();


        final BufferedReader reader = new BufferedReader(new InputStreamReader(input));
            final StringBuilder sBuf = new StringBuilder();

            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sBuf.append(line);
                }
            } catch (IOException e) {
                    Log.e(e.getMessage(), "XML parser, stream2string 1");
            } finally {
                try {
                    input.close();
                } catch (IOException e) {
                    Log.e(e.getMessage(), "XML parser, stream2string 2");
                }
            }




             String xmltext = sBuf.toString();


             int startpos = xmltext.indexOf("<geonames");
             xmltext = xmltext.substring(startpos);



            XmlPullParser parser;
            try {
                parser = XmlPullParserFactory.newInstance().newPullParser();


            parser.setInput(new StringReader (xmltext));

            int eventType = parser.getEventType();  

            String tagName = "";

            while(eventType != XmlPullParser.END_DOCUMENT) {
                switch(eventType) {

                    case XmlPullParser.START_TAG:

                          tagName = parser.getName();

                        break;


                    case XmlPullParser.TEXT :


                        if  (tagName.equalsIgnoreCase("time"))
                          erg = parser.getText();  


                    break;   

                }

                try {
                    eventType = parser.next();
                } catch (IOException e) {

                    e.printStackTrace();
                }

            }

            } catch (XmlPullParserException e) {

                e.printStackTrace();
                erg += e.toString();
            }



            } catch (IOException e1) {

                e1.printStackTrace();
            }


            } catch (MalformedURLException e1) {

                e1.printStackTrace();
            }





        return erg;

 }

এবং এটি দিয়ে ব্যবহার করুন:

GeoPoint gp = new GeoPoint(39.6034810,-119.6822510);
String Current_TimeZone_Time = get_time_zone_time_geonames(gp);

0

গুপ্পির কাছ থেকে:

import geocoders
g = geocoders.GoogleV3()
place, (lat, lng) = g.geocode('Fairbanks')
print place, (lat, lng)
Fairbanks, AK, USA (64.8377778, -147.7163889)
timezone = g.timezone((lat, lng))
print timezone.dst

আবদ্ধ পদ্ধতি America/Anchorage.dstএরDstTzInfo

আমেরিকা / অ্যাঙ্কারেজ 'এলএমটি -১ দিন, 14:00:00 এসটিডি


আমি মনে করি গুপ্পি একটি টাইপো। আপনি জিওপি বা অন্য কিছু বলতে চান ?
ম্যাট জনসন-পিন্ট

0

এটি স্বীকৃত হওয়া সত্যিই গুরুত্বপূর্ণ যে এটি সবচেয়ে সন্দেহজনক সমস্যার চেয়ে জটিল সমস্যা। অনুশীলনে আমরা অনেকেই এমন একটি কোডিং ওয়ার্কিং সেটও গ্রহণ করতে ইচ্ছুক যা "যতটা সম্ভব মামলার" পক্ষে কাজ করে, যেখানে কমপক্ষে এর মারাত্মক সমস্যাগুলি চিহ্নিত করা যায় এবং সম্মিলিতভাবে হ্রাস করা যায়। তাই আমি এই সমস্ত এবং ওপি এর মনোভাব মাথায় রেখে পোস্ট করি। অবশেষে, অবস্থান-সংবেদনশীল সময় অবজেক্ট থাকার শেষ লক্ষ্যটি (এবং আরও গুরুত্বপূর্ণভাবে এই উইকি থেকে অনুসরণ করা সময়ের অবজেক্টের সাথে গড় বাস্তবায়নের গুণমানকে এগিয়ে নিতে সহায়তা করার জন্য) লক্ষ্য সহ জিপিএসকে টাইমজোনতে রূপান্তর করার চেষ্টা করছেন এমনগুলির কাছে ব্যবহারিক মানের জন্য পাইথনে আমি কী উত্পন্ন করেছি (দয়া করে নির্দ্বিধায় এডিট করুন):

import pytz
from datetime import datetime
from tzwhere import tzwhere

def timezoned_unixtime(latitude, longitude, dt):
    tzw = tzwhere.tzwhere()
    timezone_str = tzw.tzNameAt(latitude, longitude)
    timezone = pytz.timezone(timezone_str)
    timezone_aware_datetime = timezone.localize(dt, is_dst=None)
    unix_time = (timezone_aware_datetime - datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
    return unix_time

dt = datetime(year=2017, month=1, day=17, hour=12, minute=0, second=0)
print timezoned_unixtime(latitude=40.747854, longitude=-74.004733, dt=dt)

ধন্যবাদ, তবে এটি এমন কিছু কোডের মতো দেখায় যা পাইটজ কোথাও ব্যবহার করে যা ইতিমধ্যে মূল সম্প্রদায় উইকি উত্তরটিতে তালিকাভুক্ত রয়েছে। যদি আপনি পাইটজ-এর সাথে পাইটজোর সাথে কীভাবে একত্রিত করতে চান তার একটি নমুনা সরবরাহ করতে চাইলে আপনি পিটিজহোয়ার প্রজেক্টে নিজেই এটি পিআর হিসাবে জমা দিতে চাইতে পারেন। এখানে আমরা কেবল ল্যাট / লন টু টু টু সলিউশন সন্ধান করছি - এর মধ্যে পাইটজোরেস এর মধ্যে অন্যতম।
ম্যাট জনসন-পিন্ট

0
  1. অনলাইনে বেশ কয়েকটি উত্স রয়েছে যা টাইমজোনগুলির জন্য জিওজসন ডেটা রয়েছে ( এখানে একটি , এখানে অন্যটি)

  2. GeoJSON স্থানাঙ্ক থেকে বহুভুজ বস্তু তৈরি করতে একটি জ্যামিতি গ্রন্থাগার ব্যবহার করুন ( সুঠাম [পাইথন], GEOS [C ++], JTS [জাভা], NTS [.net])।

  3. আপনার ল্যাট / এলএনজিটিকে একটি বিন্দুতে রূপান্তর করুন (তবে আপনার গ্রন্থাগার এটি উপস্থাপন করে) এবং এটি সময় অঞ্চল বহুভুজকে ছেদ করে কিনা তা পরীক্ষা করুন।

    from shapely.geometry import Polygon, Point
    
    def get_tz_from_lat_lng(lat, lng):
        for tz, geojson in timezones.iteritems():
            coordinates = geojson['features'][0]['geometry']['coordinates']
            polygon = Polygon(coordinates)
            point = Point(lng, lat)
            if polygon.contains(point):
                return tz
    

0

অক্ষাংশ এবং দ্রাঘিমাংশ ব্যবহার করে কোডের নীচে বর্তমান অবস্থানের টাইম জোন পান

String data = null;         
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location ll = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
double lat = 0,lng = 0;
if(ll!=null){
    lat=ll.getLatitude();
    lng=ll.getLongitude();
}
System.out.println(" Last known location of device  == "+lat+"    "+lng);

InputStream iStream = null; 
HttpURLConnection urlConnection = null;
try{
    timezoneurl = timezoneurl+"location=22.7260783,75.8781553&timestamp=1331161200";                    
    // timezoneurl = timezoneurl+"location="+lat+","+lng+"&timestamp=1331161200";

    URL url = new URL(timezoneurl);                
    // Creating an http connection to communicate with url 
    urlConnection = (HttpURLConnection) url.openConnection(); 

    // Connecting to url 
    urlConnection.connect();                

    // Reading data from url 
    iStream = urlConnection.getInputStream();

    BufferedReader br = new BufferedReader(new InputStreamReader(iStream));

    StringBuffer sb  = new StringBuffer();
    String line = "";
    while( ( line = br.readLine())  != null){
        sb.append(line);
    }
    data = sb.toString();
    br.close();

}catch(Exception e){
    Log.d("Exception while downloading url", e.toString());
}finally{
    try {
        iStream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    urlConnection.disconnect();
}

try {
    if(data!=null){
        JSONObject jobj=new JSONObject(data);
        timezoneId = jobj.getString("timeZoneId");

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        format.setTimeZone(TimeZone.getTimeZone(timezoneId));

        Calendar cl = Calendar.getInstance(TimeZone.getTimeZone(timezoneId));
        System.out.println("time zone id in android ==  "+timezoneId);

        System.out.println("time zone of  device in android == "+TimeZone.getTimeZone(timezoneId));
        System.out.println("time fo device in android "+cl.getTime());
    }
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

11
আপনি কোন পরিষেবা কল করছেন? এবং আপনি করেছেন কি সত্যিই আমাদের সাথে আপনার কীগুলি ভাগ করতে চেয়েছিলেন ??
ম্যাট জনসন-পিন্ট

0

আমরা যারা জাভাস্ক্রিপ্ট ব্যবহার করছি এবং গুগল এপিআই এর মাধ্যমে জিপ কোড থেকে টাইমজোন পেতে চাইছি তাদের জন্য এখানে একটি পদ্ধতি রয়েছে।

  1. ভূ-অবস্থানের মাধ্যমে ল্যাট / এলএনজি আনুন
  2. টাইমজোন API এ পাসের মাধ্যমে টাইমজোন আনুন ch
    • টাইমজোন রূপান্তরের জন্য এখানে লাক্সন ব্যবহার করা ।

দ্রষ্টব্য: আমার উপলব্ধি হ'ল জিপকোডগুলি দেশ জুড়ে অনন্য নয়, সুতরাং এটি সম্ভবত মার্কিন যুক্তরাষ্ট্রে ব্যবহারের জন্য সবচেয়ে উপযুক্ত।

const googleMapsClient; // instantiate your client here
const zipcode = '90210'
const myDateThatNeedsTZAdjustment; // define your date that needs adjusting
// fetch lat/lng from google api by zipcode
const geocodeResponse = await googleMapsClient.geocode({ address: zipcode }).asPromise();
if (geocodeResponse.json.status === 'OK') {
  lat = geocodeResponse.json.results[0].geometry.location.lat;
  lng = geocodeResponse.json.results[0].geometry.location.lng;
} else {
  console.log('Geocode was not successful for the following reason: ' + status);
}

// prepare lat/lng and timestamp of profile created_at to fetch time zone
const location = `${lat},${lng}`;
const timestamp = new Date().valueOf() / 1000;
const timezoneResponse = await googleMapsClient
  .timezone({ location: location, timestamp: timestamp })
  .asPromise();

const timeZoneId = timezoneResponse.json.timeZoneId;
// adjust by setting timezone
const timezoneAdjustedDate = DateTime.fromJSDate(
  myDateThatNeedsTZAdjustment
).setZone(timeZoneId);

-2

  function jsonpRequest(url, data)
{
    let params = "";
    for (let key in data)
    {
        if (data.hasOwnProperty(key))
        {
            if (params.length == 0)
            {
                params += "?";
            }
            else
            {
                params += "&";
            }
            let encodedKey = encodeURIComponent(key);
            let encodedValue = encodeURIComponent(data[key]);
            params += encodedKey + "=" + encodedValue;
         }
    }
    let script = document.createElement('script');
    script.src = url + params;
    document.body.appendChild(script);
}

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}
let lat_ini=[]; let lon_ini=[];
function showPosition(position) {
  lat_ini= position.coords.latitude;
  lon_ini= position.coords.longitude;
}
////delay time between lines
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
///////
function getGMT()
{
  getfinalGMT()
  getLocation()
  async function sample() {
    await sleep(2000);
let lat_str=lat_ini.toString();
let lng_str=" "+lon_ini.toString();

  let url = "https://api.opencagedata.com/geocode/v1/json";
  let data = {
    callback: "displayGMT",
    q: lat_str + lng_str,
    key: "fac4471073a347019196c1291e6a97d7"
  }
  jsonpRequest(url, data)
}
 sample();
 }
let your_GMT=[];
function displayGMT(data)
{
your_GMT=(Number(data.results[0].annotations.timezone.offset_string))
console.log(your_GMT)
}
/////
function getfinalGMT()
{
let lat=document.getElementById("lat_id").value; let lng=document.getElementById("lng_id").value;
let lat_str=lat.toString();
let lng_str=" "+lng.toString();

  let url = "https://api.opencagedata.com/geocode/v1/json";
  let data = {
    callback: "displayfinalGMT",
    q: lat + lng_str,
    key: "fac4471073a347019196c1291e6a97d7"
  }
  jsonpRequest(url, data)
 }
let final_GMT=[];
function displayfinalGMT(data)
{
final_GMT=(Number(data.results[0].annotations.timezone.offset_string))
console.log(final_GMT)
}
/////clock


const hourHand = document.querySelector('[data-hour-hand]')
const minuteHand = document.querySelector('[data-minute-hand]')
const secondHand = document.querySelector('[data-second-hand]')
  let dif_overall=[];
function setClock() {
   let gmt_diff=Number(your_GMT-final_GMT)/100
   if (gmt_diff>12){
      dif_overall=gmt_diff-12
   }
   else{
     dif_overall=gmt_diff
   }
    console.log(dif_overall)
  const currentDate = new Date()
  const secondsRatio = currentDate.getSeconds() / 60
  const minutesRatio = (secondsRatio + currentDate.getMinutes()) / 60
  const hoursRatio = (minutesRatio + currentDate.getHours() - dif_overall ) / 12
  setRotation(secondHand, secondsRatio)
  setRotation(minuteHand, minutesRatio)
  setRotation(hourHand, hoursRatio)
}

function setRotation(element, rotationRatio) {
  element.style.setProperty('--rotation', rotationRatio * 360)
}
function activate_clock(){
setClock()
setInterval(setClock, 1000)
}
*, *::after, *::before {
  box-sizing: border-box;
}

body {
  background: linear-gradient(to right, hsl(200, 100%, 50%), hsl(175, 100%, 50%));
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  overflow: hidden;
}

.clock {
  width: 200px;
  height: 200px;
  background-color: rgba(255, 255, 255, .8);
  border-radius: 50%;
  border: 2px solid black;
  position: relative;
}

.clock .number {
  --rotation: 0;
  position: absolute;
  width: 100%;
  height: 100%;
  text-align: center;
  transform: rotate(var(--rotation));
  font-size: 1.5rem;
}

.clock .number1 { --rotation: 30deg; }
.clock .number2 { --rotation: 60deg; }
.clock .number3 { --rotation: 90deg; }
.clock .number4 { --rotation: 120deg; }
.clock .number5 { --rotation: 150deg; }
.clock .number6 { --rotation: 180deg; }
.clock .number7 { --rotation: 210deg; }
.clock .number8 { --rotation: 240deg; }
.clock .number9 { --rotation: 270deg; }
.clock .number10 { --rotation: 300deg; }
.clock .number11 { --rotation: 330deg; }

.clock .hand {
  --rotation: 0;
  position: absolute;
  bottom: 50%;
  left: 50%;
  border: 1px solid white;
  border-top-left-radius: 10px;
  border-top-right-radius: 10px;
  transform-origin: bottom;
  z-index: 10;
  transform: translateX(-50%) rotate(calc(var(--rotation) * 1deg));
}

.clock::after {
  content: '';
  position: absolute;
  background-color: black;
  z-index: 11;
  width: 15px;
  height: 15px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
}

.clock .hand.second {
  width: 3px;
  height: 45%;
  background-color: red;
}

.clock .hand.minute {
  width: 7px;
  height: 40%;
  background-color: black;
}

.clock .hand.hour {
  width: 10px;
  height: 35%;
  background-color: black;
}














/* Background Styles Only */

@import url('https://fonts.googleapis.com/css?family=Raleway');

* {
    font-family: Raleway;
}

.side-links {
  position: absolute;
  top: 15px;
  right: 15px;
}

.side-link {
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  margin-bottom: 10px;
  color: white;
  width: 180px;
  padding: 10px 0;
  border-radius: 10px;
}

.side-link-youtube {
  background-color: red;
}

.side-link-twitter {
  background-color: #1DA1F2;
}

.side-link-github {
  background-color: #6e5494;
}

.side-link-text {
  margin-left: 10px;
  font-size: 18px;
}

.side-link-icon {
  color: white;
  font-size: 30px;
}
   <input type="text" id="lat_id" placeholder="lat"><br><br>
  <input type="text" id="lng_id" placeholder="lng"><br><br>
<button class="text" onClick="getLocation()">Location</button>
<button class="text" onClick="getGMT()"> GMT</button>
<button class="text" onClick="activate_clock()"> Activate</button>
<div class="clock">
  <div class="hand hour" data-hour-hand></div>
  <div class="hand minute" data-minute-hand></div>
  <div class="hand second" data-second-hand></div>
  <div class="number number1">1</div>
  <div class="number number2">2</div>
  <div class="number number3">3</div>
  <div class="number number4">4</div>
  <div class="number number5">5</div>
  <div class="number number6">6</div>
  <div class="number number7">7</div>
  <div class="number number8">8</div>
  <div class="number number9">9</div>
  <div class="number number10">10</div>
  <div class="number number11">11</div>
  <div class="number number12">12</div>
</div>


বলছি আপনাকে কোডটি একটি নতুন ব্রাউজারে কপি এবং পেস্ট করতে হবে কারণ কোড স্নিপেট আমাদের ব্যবহারকারীর অবস্থানের জন্য অনুরোধ জানাতে দেবে না
ম্যাক্সিমাস সু

আশা করি আপনি ছেলেরা এটির প্রশংসা করবেন
ম্যাক্সিমাস সু

একবার ল্যাট এবং এলএনজি প্রবেশ করুন, অবস্থানটিতে টিপুন, জিএমটি এর পরে ঘড়িটি সক্রিয় করুন
ম্যাক্সিমাস সু

আমি সত্যিই মনে করি না যে আপনি আপনার এপিআই কীটি আমাদের সাথে ওপেনকেজডাটাতে ভাগ করে নিতে চেয়েছিলেন, তাই না? ডাম্পিং কোডের পরিবর্তে, আপনি কেবল এই এপিআই বর্ণনা করতে পারেন।
ম্যাট জনসন-পিন্ট

ভাল, কিছু লোককে আরও ভালভাবে বোঝার জন্য এপিআই-তে কলব্যাক ফাংশনের একটি নমুনা দেখতে হবে
ম্যাক্সিমাস সু

-3

আপনি যদি কোনও ওয়েব পরিষেবা এড়াতে পছন্দ করেন তবে আপনি ব্রাউজার থেকে এই তথ্যটি পুনরুদ্ধার করতে পারেন:

var d = new Date();
var usertime = d.toLocaleString();

//some browsers / OSs provide the timezone name in their local string
var tzsregex = /\b(ACDT|ACST|ACT|ADT|AEDT|AEST|AFT|AKDT|AKST|AMST|AMT|ART|AST|AWDT|AWST|AZOST|AZT|BDT|BIOT|BIT|BOT|BRT|BST|BTT|CAT|CCT|CDT|CEDT|CEST|CET|CHADT|CHAST|CIST|CKT|CLST|CLT|COST|COT|CST|CT|CVT|CXT|CHST|DFT|EAST|EAT|ECT|EDT|EEDT|EEST|EET|EST|FJT|FKST|FKT|GALT|GET|GFT|GILT|GIT|GMT|GST|GYT|HADT|HAEC|HAST|HKT|HMT|HST|ICT|IDT|IRKT|IRST|IST|JST|KRAT|KST|LHST|LINT|MART|MAGT|MDT|MET|MEST|MIT|MSD|MSK|MST|MUT|MYT|NDT|NFT|NPT|NST|NT|NZDT|NZST|OMST|PDT|PETT|PHOT|PKT|PST|RET|SAMT|SAST|SBT|SCT|SGT|SLT|SST|TAHT|THA|UYST|UYT|VET|VLAT|WAT|WEDT|WEST|WET|WST|YAKT|YEKT)\b/gi;

//in other browsers the timezone needs to be estimated based on the offset
var timezonenames = {"UTC+0":"GMT","UTC+1":"CET","UTC+2":"EET","UTC+3":"EEDT","UTC+3.5":"IRST","UTC+4":"MSD","UTC+4.5":"AFT","UTC+5":"PKT","UTC+5.5":"IST","UTC+6":"BST","UTC+6.5":"MST","UTC+7":"THA","UTC+8":"AWST","UTC+9":"AWDT","UTC+9.5":"ACST","UTC+10":"AEST","UTC+10.5":"ACDT","UTC+11":"AEDT","UTC+11.5":"NFT","UTC+12":"NZST","UTC-1":"AZOST","UTC-2":"GST","UTC-3":"BRT","UTC-3.5":"NST","UTC-4":"CLT","UTC-4.5":"VET","UTC-5":"EST","UTC-6":"CST","UTC-7":"MST","UTC-8":"PST","UTC-9":"AKST","UTC-9.5":"MIT","UTC-10":"HST","UTC-11":"SST","UTC-12":"BIT"};

var timezone = usertime.match(tzsregex);
if (timezone) {
    timezone = timezone[timezone.length-1];
} else {
    var offset = -1*d.getTimezoneOffset()/60;
    offset = "UTC" + (offset >= 0 ? "+" + offset : offset);
    timezone = timezonenames[offset];
}

//there are 3 variables can use to see the timezone
// usertime - full date
// offset - UTC offset time
// timezone - country

console.log('Full Date: ' + usertime);
console.log('UTC Offset: ' + offset);
console.log('Country Code Timezone: ' + timezone);

আমার বর্তমান ক্ষেত্রে এটি মুদ্রণযোগ্য:

সম্পূর্ণ তারিখ: 27/01/2014 16: 53: 37 ইউটিসি অফসেট: ইউটিসি -3 দেশের কোড সময় অঞ্চল: বিআরটি

আশা করি এটি সহায়ক হতে পারে।


যদিও আমি আপনাকে এতে কিছুটা প্রচেষ্টা করার প্রশংসা করি, দয়া করে অনুগ্রহ করুন: 1) সময় অঞ্চলগুলি অফসেটগুলি নির্দিষ্ট করা হয়নি 2) টাইম জোনের সংক্ষিপ্তকরণগুলি মানক বা অনন্য শনাক্তকারী নয় 3) এটি ইতিমধ্যে জেসটাইমজোনডেক্ট্ট সহ আরও সঠিকভাবে সম্পন্ন হয়েছে । ৪) আপনার উত্তর প্রশ্নের সাথে মেলে না। প্রশ্ন হল কিভাবে কোন সময় জোন নির্ধারণ ছিল অক্ষাংশ ও দ্রাঘিমাংশ কোঅর্ডিনেটগুলি থেকে
ম্যাট জনসন-পিন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.