当前位置:  技术问答>linux和unix

求教date问题,谢谢

    来源: 互联网  发布时间:2016-03-08

    本文导语:  准备用shell写一个实现时间格式转换的函数, 就是类似与date -d的功能 虽然date -d 可以实现大部分,但这对shell的版本有依赖 基本要求是: 2008/2/25 -> 2008-02-25 00:00:00 2008/2/25 22:33:44 -> 2008-02-25 22:33:44 2008/2/25 22:3:4...

准备用shell写一个实现时间格式转换的函数,
就是类似与date -d的功能
虽然date -d 可以实现大部分,但这对shell的版本有依赖
基本要求是:
2008/2/25 -> 2008-02-25 00:00:00
2008/2/25 22:33:44 -> 2008-02-25 22:33:44
2008/2/25 22:3:4 -> 2008-02-25 22:03:04
20080225 -> 2008-02-25 00:00:00
20080225223344 -> 2008-02-25 22:33:44
这种格式的转换需要考虑的事情太多了
哪位高人给点思路?谢谢


|
不知道这个符不符和楼主的要求?
简单说一下思路:
1、把非数字的字符转成空格,然后把单个的数字进行前加0处理
2、把空格再去除之后,长度为8和14的两种格式自然是合法的依据相关的规则进行输出,否则输出错误信息


#!/bin/sh
format_date () {
    # check argument 
    [ -z $1 ] && echo "usage: format_date " && return
    line="$@"

    # format line
    line=$(echo $line | sed 's/[^0-9]+/ /g')
    line=$(echo $line | sed 's/ ([0-9]) / 01 /g')
    line=$(echo $line | sed 's/^([0-9]) /01 /g')
    line=$(echo $line | sed 's/ ([0-9])$/ 01/g')
    line=$(echo $line | sed 's/ +//g')
    length=$(echo -n $line | wc -c)
    
    if [ $length -eq 8 ] ; then
        # format YYYY-MM-DD 00:00:00
        year=$(echo $line | cut -c 1-4) 
        month=$(echo $line | cut -c 5-6) 
        day=$(echo $line | cut -c 7-8)
        echo "$year-$month-$day 00:00:00"
    elif [ $length -eq 14 ] ; then
        # format YYYY-MM-DD HH:MM:SS
        year=$(echo $line | cut -c 1-4) 
        month=$(echo $line | cut -c 5-6) 
        day=$(echo $line | cut -c 7-8)
        hour=$(echo $line | cut -c 9-10)
        min=$(echo $line | cut -c 11-12)
        second=$(echo $line | cut -c 13-14)
        echo "$year-$month-$day $hour:$min:$second"
    else
        echo "Invalid date string: $@"
    fi
}


format_date 2008/2/25
format_date 2008/2/25 22:33:44
format_date 2008/2/25 22:3:4
format_date 20080225
format_date 20080225223344 




执行结果 :

matrix@MMAC /c
$ sh test.sh
2008-02-02 00:00:00
2008-02-25 00:00:00
2008-02-25 22:33:44
2008-02-25 22:03:04
2008-02-25 00:00:00
2008-02-25 22:33:44
matrix@MMAC /c


:)Shell是很强大滴……



|
对日期的处理向来是一个大麻烦,建议你用c完成一个专门的处理程序,
要加上 日期格式的参数,shell搞这个,只能把自己搞得头大

|
还有,够用就行,过度设计是不好的

|
收藏了~

|
11楼思路还是蛮不错的,不过shell的效率有蛮大问题

|
这个估计很麻烦,只有尽量把可能的情况都设想到。

|
哈哈,直接用asctime或ctime,就可以了。不要用shell

|
直接用ctime(xx)或asctime(xx)函数呀,用shell太麻烦了

|
直接用ctime(xx)或asctime(xx)函数呀,用shell太麻烦了

|
直接用ctime(xx)或asctime(xx)函数呀,用shell太麻烦了

|
用asctime(xx)或ctime(xx)函数就行,不要用shell太麻烦了

|
用asctime(xx)或ctime(xx)函数就行,不要用shell太麻烦了

    
 
 

您可能感兴趣的文章:

  • 求教:linux下用squid设置反向代理?急!谢谢!
  • 求教connection的问题!谢谢
  • 求教,关于学习RMI的资料,谢谢(急需)。
  • 求教一个简单的关于管道使用的问题,谢谢
  • 求教前辈们一个关于finalize()的问题,谢谢大家帮助:)
  • grub-install安装出错,求教,谢谢
  • dup2的问题,百思不得其解,求教,谢谢
  • [求教]关于java的线程问题,谢谢帮忙 问题如下: ...........
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • linux进程fork求教,谢谢
  • 求教:VM下LINUX的X WINDOWS 问题。先谢谢了.
  • 求教:知道当前时间,如何得到N天前的时间 ? iis7站长之家
  • 高分求教Linux的问题!!!!!谢谢啦......
  • 求教: 请问怎样使用ncurses的Field制作一个密码输入框,输入密码显示的*号 谢谢各位
  • unix shell编程(Ksh) 文件内容分离,求教,谢谢
  • 请问一下AWK怎么样在一行文本中的第14个字段的最后面加一个空格符呢,不知道AWK的写法该怎么写,在线求教,谢谢了!!!
  • 求教:多连接监控设计问题,谢谢!!欢迎讨论
  • 求教shell编程 谢谢!
  • 求教:求一个树,jsp的或者javascript的都行?急用,谢谢
  • ###高分求教###很急,请帮忙,谢谢。###
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • Linux远程访问的问题,高分求教:)
  • 400分求教JAVA皮肤的问题
  • 400分求教JAVA皮肤的问题
  • 求教一个问题:
  • shell编程中,求教,查找子字符串位置的问题
  • 求教一个grep问题
  • vim使用问题求教
  • 新手求教:关于ftp命令的问题,请大家帮帮忙
  • 初学者有问题求教!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • 各路高手请进!高分求教,非常着急!
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 初学者的求教!
  • 求教了。。远程调研shell,用什么好啊?
  • 求教:tar 如何不打包路径
  • 求教:LIUNX 学开发还是学主机维护。。??
  • 求教Sed特定情景的用法
  • 求教linux C++学习之路!
  • 求教,bash脚本如何调用含键盘输入的可执行文件。
  • 求教linux的ARCH ?= $(XXX)中符号“?=”怎么理解?先谢过
  • 求教用一个端口能否实现3G视频传输


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3