Showing posts with label Angular. Show all posts
Showing posts with label Angular. Show all posts

Tuesday, 21 July 2020

Convert Time from MySQL, Angular(cli), and Go(srv)

Convert time zone in MySQL, Angular, and Go
MySQL:

#SELECT userTimezone FROM USER_PREFERENCE WHERE uid = 1;

SELECT
UploadFileID
, UserID
, Filename AS OrigFilename
, CONCAT(Filename, ' <=== this is my filename') AS Filename
, FilenameHashed
#, CreateTime AS OrigCreateTime
, CONCAT(CreateTime + INTERVAL +8 HOUR, ' UTC') AS CreateTime
FROM UploadFile
ORDER BY UploadFileID DESC
Angular(Client side): Do it in display side. Convert rawdata is usually not a good practice.

export class MyruleUploadGridComponent implements OnInit {
    // Global variables
    private gridApi;
    private gridColumnApi;

    public columnDefs = [
        {
            field: 'UploadFileID',
            headerName: 'UploadFileID',
            sortable: true,
            sortingOrder: ['asc', 'desc'],
            headerTooltip: 'asdf',
        },
        {
            field: 'UserID',
            headerName: 'UserID',
        },
        {
            field: 'Filename',
            headerName: 'Filename',
        },
        {
            field: 'CreateTime',
            headerName: 'CreateTime',
            cellRenderer: (params) => {
                return new DatePipe('en-Us').transform(params.value + ' UTC', 'short', 'locale')
            },
        },
    ];
}
Go(backend):
Method1:

var t time.Time
if t, err = TimeIn(colDef.CreateTime, "Canada/Pacific"); err != nil {
 fmt.Printf("err: %v\n", err)
}

colDef.CreateTime = t.String()

func TimeIn(inputTime string, name string) (time.Time, error) {
 var t time.Time
 var err error
 layout := "2006-01-02 15:04:05"
 if t, err = time.Parse(layout, inputTime); err != nil {
  fmt.Printf("err:%v\n", err)
 }
 loc, err := time.LoadLocation(name)
 if err == nil {
  t = t.In(loc)
 }
 return t, err
}
Method2:

package main

import (
 "fmt"
 "time"
)

func main() {

 d1 := "2020-07-29 21:47:11"
 newT1 := AddHour(d1, 51)
 fmt.Printf("Adding 1 hour\n: %s\n", newT1)
}

func AddHour(d string, numOfHour int) time.Time {
 t, _ := ConvStrToTime(d)

 newT := t.Add(time.Hour * time.Duration(numOfHour))
 return newT
}

func ConvStrToTime(str string) (time.Time, error) {
 layout := "2006-01-02 15:04:05" // Mon Jan 2 15:04:05 -0700 MST 2006
 return time.Parse(layout, str)
}