2015-10-14 10 views
26

मैं अपने डेटाबेस से कुछ मान []string पर जोड़ने की कोशिश कर रहा हूं। इनमें से कुछ टाइमस्टैम्प हैं।गोलांग: समय बदलें। स्ट्रिंग

cannot use U.Created_date (type time.Time) as type string in array element

मैं string करने के लिए time.Time परिवर्तित कर सकते हैं:

मैं त्रुटि मिलती है?

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") 
+0

यह इस तथ्य संकलक त्रुटि पर प्रकाश डाला लायक है त्रुटि पूरी तरह से वर्णन करता है। आप तारों की सरणी में एक प्रकार का समय नहीं लगा सकते हैं। –

+0

संभावित डुप्लिकेट [एक yyyyMMddHHmmss प्रारूप का उपयोग कर वर्तमान समय को कैसे प्रारूपित करें?] (Http://stackoverflow.com/questions/20234104/how-to-format-current-time-using-a-yyyymmddhhmmss-format) –

उत्तर

46

आप एक string करने के लिए एक time.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")) 

आउटपुट (Go Playground पर यह कोशिश):

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

नोट: जाओ खेल का मैदान पर समय हमेशा ऊपर देखा मान पर सेट है। वर्तमान दिनांक/समय देखने के लिए इसे स्थानीय रूप से चलाएं।

भी ध्यान रखें कि Time.Format() का उपयोग कर, लेआउट के रूप में string आप हमेशा एक ही समय पास करना तथाकथित संदर्भ समय एक तरह से आप चाहते हैं परिणाम प्रारूप तैयार किया जाता करने के लिए स्वरूपित। यह Time.Format() पर दर्ज है:

Format returns a textual representation of the time value formatted according to layout, which defines the format by showing how the reference time, defined to be

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

would be displayed if it were the value; it serves as an example of the desired output. The same display rules will then be applied to the time value.

+6

बस स्पष्ट करना।कस्टम टाइम प्रारूप पास करने के लिए, आपको समय मूल्य 'सोम जनवरी 2 15:04:05 -0700 एमएसटी 2006' का उपयोग करना होगा और इस बार जो भी प्रारूप आप चाहते हैं उसे डाल दें। यदि आप इसे इस मान के साथ पास करते हैं तो प्रारूप प्रारूप को समझ जाएगा। आप किसी अन्य समय मूल्य का उपयोग नहीं कर सकते हैं। मुझे इसे समझने में कुछ समय लगा और इसे –

+0

@AhmedEssam धन्यवाद के रूप में जोड़ने के लिए सोचा, जवाब में शामिल था। – icza

+0

बहुत बढ़िया दिन मेरा स्वागत है धन्यवाद। – sector11

1

जाओ खेल का मैदान 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) 
} 
+0

जब मैं fmt.Println (time.Now() प्रारूप ("2017/20/01 13:53:35") कोशिश करता हूं) मुझे अजीब मिल रहा है 21017/210/01 112: 3012: 1230 – irom

7
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 
}  
+0

जब मैं fmt कोशिश करता हूं। Println (time.अब() प्रारूप ("2017/20/01 13:53:35")) मुझे अजीब मिल रहा है 21017/210/01 112: 3012: 1230 – irom

+1

fmt.Println (time.Now() का उपयोग करें। प्रारूप ("2006/01/02 15:04:05")), क्योंकि प्रारूप स्ट्रिंग तय की गई है, यह "2006 01 02 15 04 05" है – Hao

1

कृपया जाओ लैंग में दिनांक & समय स्वरूप convete करने के लिए सरल समाधान खोजने के। कृपया नीचे दिया गया उदाहरण पाएं।

पैकेज लिंक: https://github.com/vigneshuvi/GoDateFormat

plackholders प्राप्त करें: 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 
} 
संबंधित मुद्दे