找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 878|回复: 5

[每日一码] 时间转换函数 by tengte

[复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2017-10-17 10:12:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
搜到时间转换函数,记录一下,以便下次自己用时好找
  1. ;;http://bbs.mjtd.com/forum.php?mo ... &highlight=date  by tengte
  2. ;;时间格式转化:CDate转化为Date,无效日期返回nil
  3. (defun CDate->Date (cdate / Round Time Diff cd dt i0 i n s)
  4.   (defun Round (x)
  5.     (if        (>= x 0)
  6.       (fix (+ x 0.5))
  7.       (fix (- x 0.5))
  8.     )                                                            ;if
  9.   )                                                            ;defun
  10.   (defun Time (dt / x h m s)
  11.     (setq x (Round (rem (* dt 1E6) 1E6)))
  12.     (setq h (/ x 10000)
  13.           m (/ (rem x 10000) 100)
  14.           s (rem x 100)
  15.     )
  16.     (/ (+ (* 3600 h) (* 60 m) s) 8.64E4)
  17.   )                                                            ;defun
  18.   (defun Diff (cd1 cd2 / y1 y2 m1 m2 d1 d2 n)
  19.     (cond
  20.       ((= cd1 cd2) (setq n 0))
  21.       ((setq y1        (/ cd1 10000)
  22.              m1        (rem (/ cd1 100) 100)
  23.              d1        (rem cd1 100)
  24.              y2        (/ cd2 10000)
  25.              m2        (rem (/ cd2 100) 100)
  26.              d2        (rem cd2 100)
  27.              n        (Round (+ (* 366 (- y1 y2)) (* 30.5 (- m1 m2)) (- d1 d2)))
  28.        )
  29.        (and (= n 0) (setq n nil))
  30.       )
  31.     )                                                            ;cond
  32.     n
  33.   )                                                            ;defun
  34.   (setq        cd (fix cdate)
  35.         dt -47130101
  36.         i0 0
  37.         n  0
  38.   )
  39.   (while (and (setq i (Diff cd dt)) (/= i 0) (/= 0 (+ i i0)))
  40.     (setq n  (+ n i)
  41.           s  (strcat "M=$(edtime," (itoa n) ",YYYYMODD)")
  42.           dt (atoi (menucmd s))
  43.           i0 i
  44.     )
  45.   )                                                            ;while
  46.   (if (or (not i) (= 0 (+ i i0)))
  47.     (setq n nil)
  48.   )                                                            ;if
  49.   (and n (setq n (+ n (Time cdate))))
  50.   n
  51. )

  52. ;;时间格式转化:Date转化为CDate
  53. (defun Date->CDate (date / s)
  54.   (setq s (strcat "M=$(edtime," (rtos date 2 8) ",YYYYMODD.HHMMSS)"))
  55.   (atof (menucmd s))
  56. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 85个

财富等级: 招财进宝

发表于 2017-10-17 19:49:50 | 显示全部楼层
下来试试什么效果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2017-10-18 00:05:37 | 显示全部楼层
不错,支持黄大师。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 780个

财富等级: 财运亨通

发表于 2017-10-18 09:41:27 | 显示全部楼层
谢谢楼主分享!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9333个

财富等级: 富甲天下

发表于 2017-10-18 14:11:24 | 显示全部楼层
感谢分享程序!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

发表于 2017-10-23 09:27:19 | 显示全部楼层
回帖是一种美德!感谢楼主的无私分享 谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 07:21 , Processed in 0.166821 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表