[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] 批处理版世界时间查看器

昨天在网上和一个外国人聊天,当时想查一下他那儿是几点,就在网上搜索了一些世界时间的网站。后来下线后就琢磨着自己来编一个简单的世界时间查看器,方便以后用。在网上搜索了一些资料,昨晚编好了一个粗糙的代码,今天中午又大概修改了一下。拿出来给大家分享下,如有bug请指出啊!需要一个文本文件city.txt在二楼列出。

经 随风 提醒,两个文件合为一个bat文件,在二楼下载!
  1. @echo off&setlocal enabledelayedexpansion
  2. :begin
  3. color 0e
  4. mode con cols=65 lines=26
  5. set n=0
  6. for /f "tokens=1-4" %%i in (city.txt) do (
  7.     if not "!country!" equ "%%i" (
  8.        set /a n+=1
  9.        set "t!n!-1=%%i %%j"
  10.        set country=%%i
  11.        set m=1
  12.     ) else (
  13.        set /a m+=1
  14.        set "t!n!-!m!=%%i %%j"
  15.     )
  16. )
  17. for /f "tokens=1-3 delims=- " %%i in ("%date%") do (
  18.     set year=%%i
  19.     set /a month=1%%j-100
  20.     set /a day=1%%k-100
  21. )
  22. set "days=312831303130313130313031"
  23. set /a ok="^!(year%%4) & ^!(^!(year%%100)) | ^!(year%%400)"
  24. if !ok! equ 1 set days=!days:3128=3129!
  25. set time1=%time%
  26. set time2=%time%
  27. if "%time1:~,1%" equ " " (set time1=%time:~1,1%) else set time1=%time:~,2%
  28. :code
  29. cls
  30. echo.
  31. echo                       ╭────────╮
  32. echo     ╭────────┤ 世界时间查看器 ├────────╮
  33. echo     │                ╰────────╯                │
  34. echo     │                                                    │
  35. echo     │       本程序的功能为查询世界各地主要城市当前日期与 │
  36. echo     │                                                    │
  37. echo     │  时间,采用算法为区时计算法。输入dir即可查看各个国 │
  38. echo     │                                                    │
  39. echo     │  家城市的代号,输入代号即可查看各地时间。代号位于  │
  40. echo     │                                                    │
  41. echo     │  每个城市的后面。例如输入57-12即可查看[美国]洛杉矶 │
  42. echo     │                                                    │
  43. echo     │  的当前时间。                                      │
  44. echo     │                                                    │
  45. echo     │       已考虑到闰年二月份多一天以及月底加一天与月初 │
  46. echo     │                                                    │
  47. echo     │  减一天的情况,请大家测试。                        │
  48. echo     │                                                    │
  49. echo     │                                  code by lhjoanna  │
  50. echo     │                                                    │
  51. echo     ╰──────────────────────────╯
  52. echo.
  53. set /p code=请输入要查询的国家城市的代号:
  54. if "%code%" equ "dir" ( call :display &echo.&echo.&goto code )
  55. call set "str=%%t!code!%%"
  56. for /f "tokens=3,4" %%i in ('findstr "%str%" city.txt 2^>nul') do (
  57.     set /a result=time1+%%j
  58.     if !result! lss 0 (
  59.         set /a result+=24
  60.         if not !day! equ 1 ( set /a day-=1 ) else (
  61.            if not !month! equ 1 (
  62.              set /a month-=1
  63.              set /a x=month*2-2
  64.              set day=!days:~%x%,2!
  65.            ) else set month=12&set day=31&set /a year-=1
  66.         )
  67.     ) else (
  68.       if !result! geq 24 (
  69.           set /a result-=24
  70.           set /a y=month*2-2
  71.           set day_=!day:~%y%,2!
  72.           if not !day! equ !day_! (set /a day+=1) else (
  73.              if not !month! equ 12 ( set /a month+=1&set day=1) else set month=1&set
  74. day=1&set /a year+=1
  75.           )
  76.       )
  77.     )
  78.     echo.&echo %str% 现在时间为:!year!-!month!-!day! !result!%time2:~2%
  79. )
  80. pause>nul
  81. goto begin
  82. :display
  83. cls
  84. set n=0
  85. for /f "tokens=1-4" %%i in (city.txt) do (
  86.     if not "!country!" equ "%%i" (
  87.        set /a n+=1
  88.        echo.
  89.        set /p=【!n!】%%i:%%j!n!-1 <nul
  90.        set "t!n!-1=%%i %%j"
  91.        set country=%%i
  92.        set m=1
  93.     ) else (
  94.        set /a m+=1
  95.        set /p=%%j!n!-!m! <nul
  96.        set "t!n!-!m!=%%i %%j"
  97.     )
  98.     for %%a in (20 41 60 80 101) do (
  99.         if !n! equ %%a pause>nul&cls
  100.     )
  101. )
  102. goto :eof
复制代码
链接: https://pan.baidu.com/s/1QnKMQLrpn89KMDVjdhfljg?pwd=2vpc
1

评分人数

    • wxcute: 辛苦收集,谢谢分享。PB + 8

city.txt

经过 随风 提醒,现把txt文件和bat文件合为一个,好像字数限制,只能打包上传了,一个是单纯的city.txt文件,方便大家研究,另一个为合并以后的bat文件。
        默认中国区时为0,大家可从city.txt中查看。本应考虑某些地区采用夏令时制提前一个小时,但由于各个国家地区在不同时期,不同形势下采用各不相同,故未计入算法。
1

评分人数

TOP

感谢分享,不过把这个txt文件和bat合为一个文件不是更方便吗?
技术问题请到论坛发帖求助!

TOP

原帖由 随风 于 2008-11-26 20:40 发表
感谢分享,不过把这个txt文件和bat合为一个文件不是更方便吗?

文件已经合并,并且打包上传,谢谢提醒,欢迎提建议啊!

TOP

多谢分享,辛苦收集。

TOP

我下载了下面那个文件,
输入dir  并没有出现国家代号啊!!! (CMD根本没反应)
没有代号就不能查。

TOP

那是因为你少了city.txt文件吧。你从二楼下载解压后运行那个bat文件,那个是合并以后的。还有就是dir不能带空格,只是dir。

TOP

值得研究!!!支持!!!

TOP

怎么没办法用啊
怎么用?

TOP

你看一下主界面的说明,输入dir查看代号,输入代号查看时间。

TOP

很好用  谢谢了

TOP

返回列表