গো ল্যাঙ্গুয়েজে ইউনিক্স টাইমস্ট্যাম্প প্রাপ্ত (যুগ যুগের সেকেন্ডে বর্তমান সময়)


88

আমার গোতে কিছু কোড লেখা আছে যা আমি সর্বশেষ সাপ্তাহিক বিল্ডগুলির সাথে কাজ করার জন্য আপডেট করার চেষ্টা করছি। (এটি সর্বশেষে r60 এর অধীনে নির্মিত হয়েছিল)। নিম্নলিখিত বিট ব্যতীত এখন সবকিছুই কাজ করছে:

 if t, _, err := os.Time(); err == nil {
   port[5] = int32(t)
 }

বর্তমান গো বাস্তবায়নের সাথে কাজ করতে কীভাবে এটি আপডেট করবেন সে সম্পর্কে কোনও পরামর্শ?

উত্তর:


171
import "time"
...
port[5] = int32(time.Now().Unix())

44
সতর্কতা: Unix()ফেরতের মান টাইপ হয় int64। প্রকারের ধরণের int64মানটি কেটে দেওয়া বছর 2038 সমস্যারint32 একটি উদাহরণ ।
পিটারএসও

4
go1.9.2 ডারউইন / এএমডি 64 এটি ধারাবাহিকভাবে ফিরে আসে: 1969-12-31 19:00:00, যা মোটামুটি: সময়.উনিক্স (0, 0) এর সমান। এটি কাটা ছাড়াই।
শুক্রবার

31

আপনি যদি এটি চান তবে stringএটির মাধ্যমে রূপান্তর করুন strconv:

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
    fmt.Println(timestamp) // prints: 1436773875771421417
}

এর মানে কি? যদি কেউ কোনও সংখ্যাকে একটি স্ট্রিংয়ে রূপান্তর করতে চান, তবে এটি কীভাবে করবেন তা তিনি খুঁজে পেতে পারেন। বা হতে পারে আমার কেবল অন্য উত্তর যুক্ত করা উচিত: আপনি যদি এটিকে বাইটায়ারে রূপান্তর করতে চান তবে কেবল []] বাইট (...) করবেন?
সালভাদোর ডালি

12
@ সালভাদোরডালি আসলে এটি আমার প্রয়োজন ছিল। এগিয়ে যান এবং আপনার উত্তরটি এটিকে বাইট অ্যারেতে রূপান্তর করতে যুক্ত করুন যদি আপনি চান তবে আমি নিশ্চিত যে কেউ শেষ পর্যন্ত আসবে এবং কোডটির প্রয়োজন হবে।
anon58192932

4
সময়.নউ ()। ইউটিসি ()। ইউনিক্সনানো () সময়ের সাথে প্রতিস্থাপন করা যেতে পারে.নাউ ()। ইউনিক্সনো () - ডক বলেছেন যে ফলাফল টি এর সাথে যুক্ত অবস্থানের উপর নির্ভর করে না।
আবু জুনায়েদ

16

আরেকটি টিপ। time.Now().UnixNano()(গডোক) যুগে যুগে আপনাকে ন্যানোসেকেন্ড দেবে। এটি কঠোরভাবে ইউনিক্স সময় নয়, তবে এটি আপনাকে একই যুগের সাহায্যে উপ-দ্বিতীয় যথার্থতা দেয় যা সহজেই কার্যকর হতে পারে।

সম্পাদনা: বর্তমান গোলং এপিআইয়ের সাথে মেলে পরিবর্তন হয়েছে


4
আমি জানি আমি একটি পুরানো থ্রেডটি পুনরুত্থিত করছি, তবে আমি অবাক হয়ে যাচ্ছি ... পাইথন বিভিন্ন প্ল্যাটফর্মগুলিতে একটি সুনির্দিষ্ট সময় পাওয়ার সাথে এটির যে সমস্যা রয়েছে তা স্পষ্টভাবে ডকুমেন্ট করছে। ডকস.পিথোন.আর. / 2 / লাইবারি / টাইম.চ.টি.এমএল দেখুন এবং "নির্ভুলতা" অনুসন্ধান করুন। মুল বক্তব্যটি হ'ল এটি নয় কারণ আপনার কাছে একটি ভাসমান 64 রয়েছে যা সমস্ত দশমিকের উল্লেখযোগ্য। গো-র সময় কীভাবে কার্যকর হয়, আমি এই ন্যানোসেকেন্ডের নির্ভুলতার উপর কতটা বিশ্বাস রাখতে পারি?
নিরিল

4
এটি এখানে কাজ করে না, তবে time.Now().UnixNano()( রেফারেন্স ) তা করে।
জো লিস

0

মানব-পঠনযোগ্য ব্যাখ্যার জন্য এখানে অন্য একটি উত্তর থেকে ধারণাটি তৈরি করা, আপনি ব্যবহার করতে পারেন:

package main

import (
    "fmt"
    "time"
)

func main() {
    timestamp := time.Unix(time.Now().Unix(), 0)
    fmt.Printf("%v", timestamp) // prints: 2009-11-10 23:00:00 +0000 UTC
}

এটি গো খেলার মাঠে চেষ্টা করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.