goBlockchainDataAnalysis/dateAnalysis.go
dateAnalysis.goRaw
1package main
2
3import (
4 "fmt"
5 "strconv"
6 "strings"
7 "time"
8
9 "gopkg.in/mgo.v2/bson"
10)
11
12func decomposeDate(blockTime int64) (int, int, int, int) {
13 /*i, err := strconv.ParseInt(blockTime, 10, 64)
14 if err != nil {
15 panic(err)
16 }*/
17 i := blockTime
18 year := time.Unix(i, 0).Year()
19 month := time.Unix(i, 0).Month()
20 day := time.Unix(i, 0).Day()
21 hour := time.Unix(i, 0).Hour()
22 return year, int(month), day, hour
23}
24func unixTimeToTime(blockTime int64) time.Time {
25 return time.Unix(blockTime, 0)
26}
27func timeToDate(blockTime int64) string {
28 stringTime := strconv.FormatInt(blockTime, 10)
29 i, err := strconv.ParseInt(stringTime, 10, 64)
30 if err != nil {
31 panic(err)
32 }
33 tm := time.Unix(i, 0)
34 //fmt.Println(tm)
35 stringDate := tm.String()
36 //fmt.Println(stringDate)
37 return stringDate
38}
39func hourAnalysis(e EdgeModel, blockTime int64) {
40 //fmt.Println(blockTime)
41 date := timeToDate(blockTime)
42 dateHour := strings.Split(date, " ")[1]
43 hour := strings.Split(dateHour, ":")[0]
44
45 hourCount := HourCountModel{}
46 err := hourCountCollection.Find(bson.M{"hour": hour}).One(&hourCount)
47 if err != nil {
48 //date not yet in DB
49 var hourCount HourCountModel
50 hourCount.Hour = hour
51 hourCount.Count = 1
52 err = hourCountCollection.Insert(hourCount)
53 check(err)
54 } else {
55 hourCount.Count++
56 err = hourCountCollection.Update(bson.M{"hour": hour}, &hourCount)
57 check(err)
58 }
59}
60func dateAnalysis(e EdgeModel, blockTime int64) {
61 fmt.Println(blockTime)
62 date := timeToDate(blockTime)
63
64 dateCount := DateCountModel{}
65 err := dateCountCollection.Find(bson.M{"date": date}).One(&dateCount)
66 if err != nil {
67 //date not yet in DB
68 var dateCount DateCountModel
69 dateCount.Date = date
70 dateCount.Time = blockTime
71 dateCount.Count = 1
72 err = dateCountCollection.Insert(dateCount)
73 check(err)
74 } else {
75 dateCount.Count++
76 err = dateCountCollection.Update(bson.M{"date": date}, &dateCount)
77 check(err)
78 }
79}