Linux终端生存之道-时间处理


mac 下的 date 函数有是有有些表现形式跟我们搜到的一些资料不用,因此建议使用 gdate ,我们只需要 brew install gdate 就行。

日期处理

# 格式 2018
# 当前日期 [String]<-()
function localdate_now_year(){
  date +%Y
}
# 格式 03
# 当前日期 [String]<-()
function localdate_now_month(){
  date +%m
}
# 格式 09
# 当前日期 [String]<-()
function localdate_now_day(){
  date +%d
}
# 格式 Saturday
# 当前日期 [String]<-()
function localdate_now_week(){
  date +%A
}
# 格式 251
# 今天是一年的第几天
function localdate_now_dayOfYear(){
  gdate +%j
}
# 格式 Saturday
# 当前日期 [String]<-()
function localdate_getDayOfYear(){ _NotBlank "$1"
  gdate -d "$1" +%j
}
# 取出给的日期的年份
function localdate_getYear(){ _NotBlank "$1"
  gdate -d "$1" +%Y
}
# 取出给的日期的月份
function localdate_getMonth(){ _NotBlank "$1"
  gdate -d "$1" +%m
}
# 取出给的日期的日期
function localdate_getDay(){ _NotBlank "$1"
  gdate -d "$1" +%d
}
# 格式 Saturday
# 取出给的日期是星期几
function localdate_getWeek(){ _NotBlank "$1"
  gdate -d "$1" +%A
}

# 返回值格式 yyyyMMdd
# 当前时间+x天后的日期 [String]<-(duration:Integer)
function localdate_now_plusDay(){ _NotBlank "$1" "duration[day] can not be null"
  local duration=$1
  gdate -d "$(localdate_now) ${duration} day" "${DEFAULT_LOCALDATE_FORMAT}"
}
# 返回值格式 yyyyMMdd
# 当前时间+x天后的日期 [String]<-(duration:Integer)
function localdate_now_plusWeek(){ _NotBlank "$1" "duration[week] can not be null"
  local duration=$1
  gdate -d "$(localdate_now) ${duration} week" "${DEFAULT_LOCALDATE_FORMAT}"
}
# 返回值格式 yyyyMMdd
# 当前时间+x月后的日期 [String]<-(duration:Integer)
function localdate_now_plusMonth(){ _NotBlank "$1" "duration[month] can not be null"
  local duration=$1
  gdate -d "$(localdate_now) ${duration} month" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当前时间+x年后的日期 [String]<-(duration:Integer)
function localdate_now_plusYear(){ _NotBlank "$1" "duration[year] can not be null"
  local duration=$1
  gdate -d "$(localdate_now) ${duration} year" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x天后的日期 [String]<-(duration:Integer)
function localdate_plusDay(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[day] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} day" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x天后的日期 [String]<-(duration:Integer)
function localdate_plusWeek(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[day] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} week" "${DEFAULT_LOCALDATE_FORMAT}"
}
# 返回值格式 yyyyMMdd
# 当指定时间+x月后的日期 [String]<-(duration:Integer)
function localdate_plusMonth(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[month] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} month" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x年后的日期 [String]<-(duration:Integer)
function localdate_plusYear(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[year] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} year" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x年后的日期 [String]<-(duration:Integer)
function localdate_plus(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration}" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 指定时间转换成指定格式
function localdate_format(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "format can not be null"
  gdate -d "$1" "$2"
}

function localdate_timestamp(){ _NotBlank "$1"
  local localdate=$(localdate_format "$1" "${DEFAULT_LOCALDATE_FORMAT}")
  gdate -d "${localdate}" +%s
}

localdate_isEqual(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdate_timestamp "$1")
  local time2=$(localdate_timestamp "$2")

  if [[ ${time1} -eq ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

localdate_isAfter(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdate_timestamp "$1")
  local time2=$(localdate_timestamp "$2")

  if [[ ${time1} -gt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}
localdate_isBefore(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdate_timestamp "$1")
  local time2=$(localdate_timestamp "$2")

  if [[ ${time1} -lt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}


localdate_now_isEqual(){ _NotBlank "$1"
  local time1=$(localdate_timestamp $(localdate_now))
  local time2=$(localdate_timestamp "$1")

  if [[ ${time1} -eq ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

localdate_now_isAfter(){ _NotBlank "$1"
  local time1=$(localdate_timestamp $(localdate_now))
  local time2=$(localdate_timestamp "$1")

  if [[ ${time1} -gt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}
localdate_now_isBefore(){ _NotBlank "$1"
  local time1=$(localdate_timestamp $(localdate_now))
  local time2=$(localdate_timestamp "$1")

  if [[ ${time1} -lt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

# 指定时间之间差几天
function localdate_duration(){  _NotBlank "$1" &&  _NotBlank "$2"
  local date1=$(localdate_getDayOfYear "$1")
  local date2=$(localdate_getDayOfYear "$2")
  echo $(( date2-date1 ))
}

日期&时间

# 格式 2018-03-09T00:53:26
# 当前日期:时间 [String]<-()
function localdatetime_now(){
  date "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 秒级别的时间戳
function localdatetime_now_timestamp(){
  date +%s
}

# 格式 2018-03-09T00:53:26
# 当前日期:时间 [String]<-()
function localdatetime_now_hour(){
  localtime_now_hour
}

# 格式 2018-03-09T00:53:26
# 当前日期:时间 [String]<-()
function localdatetime_now_minute(){
  localtime_now_minutes
}

# 格式 2018-03-09T00:53:26
# 当前日期:时间 [String]<-()
function localdatetime_now_second(){
  localtime_now_seconds
}

# 格式 2018
# 当前日期 [String]<-()
function localdatetime_now_year(){
  localdate_now_year
}
# 格式 03
# 当前日期 [String]<-()
function localdatetime_now_month(){
  localdate_now_month
}
# 格式 09
# 当前日期 [String]<-()
function localdatetime_now_day(){
  localdate_now_day
}
# 格式 Saturday
# 当前日期 [String]<-()
function localdatetime_now_week(){
  localdate_now_week
}
# 格式 251
# 今天是一年的第几天
function localdatetime_now_dayOfYear(){
  localdate_now_dayOfYear
}
# 格式 Saturday
# 当前日期 [String]<-()
function localdatetime_getDayOfYear(){ _NotBlank "$1"
  localdate_getDayOfYear "$1"
}
# 取出给的日期的年份
function localdatetime_getYear(){ _NotBlank "$1"
  localdate_getYear "$1"
}
# 取出给的日期的月份
function localdatetime_getMonth(){ _NotBlank "$1"
  localdate_getMonth "$1"
}
# 取出给的日期的日期
function localdatetime_getDay(){ _NotBlank "$1"
  localdate_getDay "$1"
}
# 格式 Saturday
# 取出给的日期是星期几
function localdatetime_getWeek(){ _NotBlank "$1"
  localdate_getWeek "$1"
}

# 格式 Saturday
# 取出给的日期是星期几
function localdatetime_getLocaldate(){ _NotBlank "$1"
  gdate -d "$1" "${DEFAULT_LOCALDATE_FORMAT}"
}

# 格式 Saturday
# 取出给的日期是星期几
function localdatetime_getLocaltime(){ _NotBlank "$1"
  gdate -d "$1" "${DEFAULT_LOCALTIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当前时间+x天后的日期 [String]<-(duration:Integer)
function localdatetime_now_plusDay(){ _NotBlank "$1" "duration[day] can not be null"
  local duration=$1
  gdate -d "$(localdatetime_now) ${duration} day" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当前时间+x天后的日期 [String]<-(duration:Integer)
function localdatetime_now_plusWeek(){ _NotBlank "$1" "duration[week] can not be null"
  local duration=$1
  gdate -d "$(localdatetime_now) ${duration} week" "${DEFAULT_LOCALDATETIME_FORMAT}"
}
# 返回值格式 yyyyMMdd
# 当前时间+x月后的日期 [String]<-(duration:Integer)
function localdatetime_now_plusMonth(){ _NotBlank "$1" "duration[month] can not be null"
  local duration=$1
  gdate -d "$(localdatetime_now) ${duration} month" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当前时间+x年后的日期 [String]<-(duration:Integer)
function localdatetime_now_plusYear(){ _NotBlank "$1" "duration[year] can not be null"
  local duration=$1
  gdate -d "$(localdatetime_now) ${duration} year" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x天后的日期 [String]<-(duration:Integer)
function localdatetime_plusDay(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[day] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} day" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x天后的日期 [String]<-(duration:Integer)
function localdatetime_plusWeek(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[day] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} week" "${DEFAULT_LOCALDATETIME_FORMAT}"
}
# 返回值格式 yyyyMMdd
# 当指定时间+x月后的日期 [String]<-(duration:Integer)
function localdatetime_plusMonth(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[month] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} month" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x年后的日期 [String]<-(duration:Integer)
function localdatetime_plusYear(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration[year] can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration} year" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 返回值格式 yyyyMMdd
# 当指定时间+x年后的日期 [String]<-(duration:Integer)
function localdatetime_plus(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "duration can not be null"
  local myLocaldate=$1 ; local duration=$2
  gdate -d "${myLocaldate} ${duration}" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

# 指定时间转换成指定格式
function localdatetime_format(){ _NotBlank "$1" "date can not be null" &&  _NotBlank "$2" "format can not be null"
  gdate -d "$1" "$2"
}

function localdatetime_timestamp(){ _NotBlank "$1"
  local localdate=$(localdatetime_format "$1" "${DEFAULT_LOCALDATETIME_FORMAT}")
  gdate -d "${localdate}" +%s
}

localdatetime_isEqual(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdatetime_timestamp "$1")
  local time2=$(localdatetime_timestamp "$2")

  if [[ ${time1} -eq ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

localdatetime_isAfter(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdatetime_timestamp "$1")
  local time2=$(localdatetime_timestamp "$2")

  if [[ ${time1} -gt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}
localdatetime_isBefore(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdatetime_timestamp "$1")
  local time2=$(localdatetime_timestamp "$2")

  if [[ ${time1} -lt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

localdatetime_now_isEqual(){ _NotBlank "$1" && _NotBlank "$2"
  local time1=$(localdatetime_now_timestamp)
  local time2=$(localdatetime_timestamp "$1")

  if [[ ${time1} -eq ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

localdatetime_now_isAfter(){ _NotBlank "$1"
  local time1=$(localdatetime_now_timestamp)
  local time2=$(localdatetime_timestamp "$1")

  if [[ ${time1} -gt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}
localdatetime_now_isBefore(){ _NotBlank "$1"
  local time1=$(localdatetime_now_timestamp)
  local time2=$(localdatetime_timestamp "$1")

  if [[ ${time1} -lt ${time2} ]];then
    return "${TRUE}"
  fi

  return "${FALSE}"
}

# 两个时间之间差多少s
function localdatetime_duration(){ _NotBlank "$1"
  local time1=$(localdatetime_timestamp "$1")
  local time2=$(localdatetime_timestamp "$2")

  echo $((time2-time1))
}

时间戳

function timestamp_now(){
  gdate +%s
}

function timestamp_now_nano(){
  gdate +%s%N
}

function timestamp_toLocaldate(){
  gdate -d "@$1" "${DEFAULT_LOCALDATE_FORMAT}"
}

function timestamp_toLocaltime(){
  gdate -d "@$1" "${DEFAULT_LOCALTIME_FORMAT}"
}

function timestamp_toLocaldatetime(){
  gdate -d "@$1" "${DEFAULT_LOCALDATETIME_FORMAT}"
}

function timestamp_of(){
  gdate -d "$1" +%s
}

评论
  目录