সময় রূপান্তর করুন। সময় স্ট্রিং


112

আমি আমার ডাটাবেস থেকে একটি গোতে কিছু মান যুক্ত করার চেষ্টা করছি []string। এর কয়েকটি টাইমস্ট্যাম্প are

আমি ত্রুটি পেয়েছি:

U.Created_date (টাইপ টাইম.টাইম) অ্যারের এলিমেন্টে টাইপ স্ট্রিং হিসাবে ব্যবহার করতে পারবেন না

আমি কি রূপান্তর time.Timeকরতে পারি string?

type UsersSession struct {
    Userid int
    Timestamp time.Time
    Created_date time.Time
}

type Users struct {
    Name string
    Email string
    Country string
    Created_date time.Time
    Id int
    Hash string
    IP string
}

-

var usersArray = [][]string{}

rows, err := db.Query("SELECT u.id, u.hash, u.name, u.email, u.country, u.IP, u.created_date, us.timestamp, us.created_date FROM usersSession AS us LEFT JOIN users AS u ON u.id = us.userid WHERE us.timestamp + interval 30 minute >= now()")

U := Users{}
US := UsersSession{}

for rows.Next() {
    err = rows.Scan(&U.Id, &U.Hash, &U.Name, &U.Email, &U.Country, &U.IP, &U.Created_date, &US.Timestamp, &US.Created_date)
    checkErr(err)

    userid_string := strconv.Itoa(U.Id)
    user := []string{userid_string, U.Hash, U.Name, U.Email, U.Country, U.IP, U.Created_date, US.Timestamp, US.Created_date}
    // -------------
    // ^ this is where the error occurs
    // cannot use U.Created_date (type time.Time) as type string in array element (for US.Created_date and US.Timestamp aswell)
    // -------------

    usersArray = append(usersArray, user)
    log.Print("usersArray: ", usersArray)
}

সম্পাদনা

আমি নিম্নলিখিত যোগ। ধন্যবাদ, এখন এটি কাজ করে।

userCreatedDate := U.Created_date.Format("2006-01-02 15:04:05")
userSessionCreatedDate := US.Created_date.Format("2006-01-02 15:04:05")
userSessionTimestamp := US.Timestamp.Format("2006-01-02 15:04:05")

সংকলক ত্রুটিটি সম্পূর্ণরূপে ত্রুটিটি বর্ণনা করে এমন ঘটনাটি হাইলাইট করার মতো। আপনি কোনও স্ট্রিংয়ের অ্যারেতে টাইপ টাইম রাখতে পারবেন না।
বেন ক্যাম্পবেল


আমি কিছু পরামর্শ কাজ করতে পারিনি, আমি time.Now().String()আপাতত ব্যবহার করেছি
মার্ক রবসন

উত্তর:


172

আপনি ব্যবহার করতে পারেন Time.String()একটি রূপান্তর করতে পদ্ধতি time.Timeএকটি থেকে string। এটি বিন্যাসের স্ট্রিং ব্যবহার করে "2006-01-02 15:04:05.999999999 -0700 MST"

আপনার যদি অন্য কাস্টম বিন্যাসের প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন Time.Format()। উদাহরণস্বরূপ টাইমস্ট্যাম্পটি yyyy-MM-dd HH:mm:ssব্যবহারের ফর্ম্যাটের স্ট্রিংটিতে স্ট্রিমটি পেতে "2006-01-02 15:04:05"

উদাহরণ:

t := time.Now()
fmt.Println(t.String())
fmt.Println(t.Format("2006-01-02 15:04:05"))

আউটপুট ( গো খেলার মাঠে এটি চেষ্টা করুন ):

2009-11-10 23:00:00 +0000 UTC
2009-11-10 23:00:00

দ্রষ্টব্য: গো প্লেগ্রাউন্ডে সময় সর্বদা উপরে প্রদর্শিত মানকে সেট করা হয়। বর্তমান তারিখ / সময় দেখতে এটি স্থানীয়ভাবে চালান।

এছাড়াও মনে রাখবেন যে Time.Format()লেআউটটি ব্যবহার করে stringআপনাকে সর্বদা একই সময়টি পাস করতে হবে - রেফারেন্স সময়টি বলা হয়েছে – এমনভাবে বিন্যাস করা যাতে আপনি ফলাফলটি ফর্ম্যাট করতে চান। এটি এখানে নথিভুক্ত করা হয় Time.Format():

বিন্যাসটি বিন্যাস অনুসারে বিন্যাসকৃত সময়ের মানটির একটি পাঠ্য উপস্থাপনা প্রদান করে, যা রেফারেন্স সময়কে কীভাবে সংজ্ঞায়িত করে তা দেখিয়ে বিন্যাসকে সংজ্ঞায়িত করে

Mon Jan 2 15:04:05 -0700 MST 2006

এটি মান হলে প্রদর্শিত হবে; এটি পছন্দসই আউটপুট উদাহরণ হিসাবে কাজ করে। তারপরে একই প্রদর্শনের নিয়মগুলি সময় মূল্যতে প্রয়োগ করা হবে।


21
শুধু পরিষ্কার করার জন্য। একটি কাস্টম সময় ফর্ম্যাট পাস করার জন্য, আপনাকে সময় মানটি ব্যবহার করতে হবে Mon Jan 2 15:04:05 -0700 MST 2006এবং আপনি যা চান বিন্যাসে এই সময়টি রাখতে হবে। আপনি যদি এই মানটি দিয়ে পাস করেন তবে যান ফর্ম্যাটটি বুঝতে পারবেন। আপনি অন্য কোনও সময় মান ব্যবহার করতে পারবেন না। এটি বের করতে আমার কিছুটা সময় লেগেছে এবং এটিকে একটি মন্তব্য হিসাবে যুক্ত করার চিন্তাভাবনা করেছে
আহমেদ এছাম

@ আহমেদএসাম ধন্যবাদ, উত্তরে এটি অন্তর্ভুক্ত করা হয়েছে।
আইসিজা

20
package main                                                                                                                                                           

import (
    "fmt"
    "time"
)

// @link https://golang.org/pkg/time/

func main() {

    //caution : format string is `2006-01-02 15:04:05.000000000`
    current := time.Now()

    fmt.Println("origin : ", current.String())
    // origin :  2016-09-02 15:53:07.159994437 +0800 CST

    fmt.Println("mm-dd-yyyy : ", current.Format("01-02-2006"))
    // mm-dd-yyyy :  09-02-2016

    fmt.Println("yyyy-mm-dd : ", current.Format("2006-01-02"))
    // yyyy-mm-dd :  2016-09-02

    // separated by .
    fmt.Println("yyyy.mm.dd : ", current.Format("2006.01.02"))
    // yyyy.mm.dd :  2016.09.02

    fmt.Println("yyyy-mm-dd HH:mm:ss : ", current.Format("2006-01-02 15:04:05"))
    // yyyy-mm-dd HH:mm:ss :  2016-09-02 15:53:07

    // StampMicro
    fmt.Println("yyyy-mm-dd HH:mm:ss: ", current.Format("2006-01-02 15:04:05.000000"))
    // yyyy-mm-dd HH:mm:ss:  2016-09-02 15:53:07.159994

    //StampNano
    fmt.Println("yyyy-mm-dd HH:mm:ss: ", current.Format("2006-01-02 15:04:05.000000000"))
    // yyyy-mm-dd HH:mm:ss:  2016-09-02 15:53:07.159994437
}    

4
আমি যখন fmt.Println চেষ্টা (। Time.Now () বিন্যাস ( "2017/20/01 13:53:35")) আমি হচ্ছি অদ্ভুত 21017/210/01 112: 3012: 1230
ইরম

4
এফএমটি.প্রিন্টলন (সময়.নাউ ()। ফর্ম্যাট ("2006/01/02 15:04:05")), কারণ ফর্ম্যাট স্ট্রিং স্থির হয়েছে, এটি "2006 01 02 15 04 05"
হাও

2

খেলার মাঠে যান http://play.golang.org/p/DN5Py5MxaB

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    // The Time type implements the Stringer interface -- it
    // has a String() method which gets called automatically by
    // functions like Printf().
    fmt.Printf("%s\n", t)

    // See the Constants section for more formats
    // http://golang.org/pkg/time/#Time.Format
    formatedTime := t.Format(time.RFC1123)
    fmt.Println(formatedTime)
}

আমি যখন fmt.Println চেষ্টা (। Time.Now () বিন্যাস ( "2017/20/01 13:53:35")) আমি হচ্ছি অদ্ভুত 21017/210/01 112: 3012: 1230
ইরম

কারণ আপনি 20 করেন যা যাবার অর্থবহ নয় তাই 2 তারিখটি সম্ভবত 21 সময় ছিল এবং অতিরিক্ত 0 কেবল যুক্ত হয়েছে @irom
নিকোসোস

1

Go ল্যাং-এ তারিখ ও সময় ফর্ম্যাটটি সরবরাহ করার সহজ সমাধানটি খুঁজে নিন। নীচের উদাহরণটি সন্ধান করুন।

প্যাকেজ লিঙ্ক: https://github.com/vigneshuvi/GoDateformat

দয়া করে ছদ্মবেশী খুঁজে নিন: https://medium.com/@Martynas/formatting-date-and-time-in-golang-5816112bf098

package main


// Import Package
import (
    "fmt"
    "time"
    "github.com/vigneshuvi/GoDateFormat"
)

func main() {
    fmt.Println("Go Date Format(Today - 'yyyy-MM-dd HH:mm:ss Z'): ", GetToday(GoDateFormat.ConvertFormat("yyyy-MM-dd HH:mm:ss Z")))
    fmt.Println("Go Date Format(Today - 'yyyy-MMM-dd'): ", GetToday(GoDateFormat.ConvertFormat("yyyy-MMM-dd")))
    fmt.Println("Go Time Format(NOW - 'HH:MM:SS'): ", GetToday(GoDateFormat.ConvertFormat("HH:MM:SS")))
    fmt.Println("Go Time Format(NOW - 'HH:MM:SS tt'): ", GetToday(GoDateFormat.ConvertFormat("HH:MM:SS tt")))
}

func GetToday(format string) (todayString string){
    today := time.Now()
    todayString = today.Format(format);
    return
}

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