// Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.

// Package common this file for time format
package common

import (
"database/sql/driver"
"fmt"
"time"
)

const timeFormat = "2006-01-02 15:04:05"

// DateTime DateTime
type DateTime time.Time

// MarshalJSON for time format to datetime
func (t DateTime) MarshalJSON() ([]byte, error) {
datetime := fmt.Sprintf(`"%s"`, time.Time(t).Format(timeFormat))
return []byte(datetime), nil
}

// Value insert timestamp into mysql need this function.
func (t DateTime) Value() (driver.Value, error) {
var zeroTime time.Time
ti := time.Time(t)
if ti.UnixNano() == zeroTime.UnixNano() {
return nil, nil
}
return ti, nil
}

// Scan valueof time.Time
func (t *DateTime) Scan(v interface{}) error {
ti, ok := v.(time.Time) // NOT directly assertion v.(DateTime)
if ok {
*t = DateTime(ti)
return nil
}
return fmt.Errorf("can not convert %v to timestamp", v)
}

// ResultMsg resp struct
type ResultMsg struct {
Status string `json:"status"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}

// PageResult pagequery resut
type PageResult struct {
CurrentPage int `json:"currentPage"`
PageSize int `json:"pageSize"`
PageCount uint64 `json:"pageCount"`
Total uint64 `json:"total"`
Data interface{} `json:"data"`
}

const (
// StatusOK status
StatusOK = 200
// StatusFailed failed status
StatusFailed = 400
// BaseHex Base Parse integer need params
BaseHex = 10
// BitSize64 Base Parse integer need params
BitSize64 = 64

// HTTPServerTimeout http server timeout
HTTPServerTimeout = 20
// MaxConcurrency default max concurrency
MaxConcurrency = 100
// DefaultConcurrency default concurrency
DefaultConcurrency = 20
// SortByAsc sort by asc
SortByAsc = "asc"
// SortByDesc sort by desc
SortByDesc = "desc"
// MaxPageSize the max page size
MaxPageSize = 100
// ContentDisposition header information
ContentDisposition = "Content-Disposition"
// ContentType header information
ContentType = "Content-Type"
// AcceptLength header information
AcceptLength = "Accept-Length"

// ConnectionRetryTimes retry connect times
ConnectionRetryTimes = 3
// DefaultRequestTimeout internal request timeout
DefaultRequestTimeout = 5
)

// NewDateTime new DateTime for marshal
func NewDateTime(time2 time.Time) *DateTime {
if time2.IsZero() {
return nil
}

datetime := DateTime(time2)
return &datetime
}

最新文章

  1. Sqoop_ 从 hive 导到mysql常遇九问题总结(转)
  2. 在config文件输入特殊字符
  3. 小菜的系统框架界面设计-灰姑娘到白雪公主的蜕变(工具条OutLookBar)
  4. Eclipse无法识别Android真机的解决方法
  5. Oracle物理结构与逻辑结构
  6. js中的逻辑或和逻辑与
  7. arm mov 指令
  8. 我理解设计模式C++实现观察者模式Observer Pattern
  9. 认识Backbone (四)
  10. EDI
  11. windows下创建MySQL定时备份与删除脚本
  12. python列表解析式,字典解析式,集合解析式和生成器
  13. Vue(十九)Vuex
  14. maven install安装工程
  15. iOS 在不添加库的情况下 通过抽象类来获取自己想要的方法
  16. 20155202 2016-2017-2 《Java程序设计》第6周学习总结
  17. C#默认以管理员身份运行程序实现代码
  18. [agc006f] Blackout 神题
  19. Android手机测试-ddms&monitor-抓crash,log
  20. LibRec:一个实现推荐系统的Java库包

热门文章

  1. 数据卷之Docker File
  2. KingbaseES 工具sys_dump,sys_restore使用介绍
  3. KingbaseES V8R3 集群专用机网关失败分析案例
  4. kingbaseES R3 集群备库转换为单实例库案例
  5. 【读书笔记】C#高级编程 第一章 .NET体系结构
  6. centos7设置时间和上海时区并进行同步
  7. @EqualsAndHashCode(callSuper = false) 解释
  8. 6.Ceph 基础篇 - CephFS 文件系统
  9. 4.Ceph 基础篇 - 对象存储使用
  10. MinIO监控指南