Board logo

标题: [文本处理] [已解决]请教批处理, 如何将文本数据 ,美东时间制改为北京时间制 [打印本页]

作者: KLL    时间: 2021-11-13 11:21     标题: [已解决]请教批处理, 如何将文本数据 ,美东时间制改为北京时间制

本帖最后由 KLL 于 2021-11-25 15:45 编辑

请教批处理, 如何将文本数据 ,美东时间制改为北京时间制
时差整好12小时

文本格式如下
2021/10/26,19:10,35684,35684,35664,35666,154,0
2021/10/27,22:15,35438,35438,35428,35431,79,0
2021/10/29,12:20,35597,35605,35571,35582,2225,0
2021/11/1,00:35,35782,35789,35782,35787,109,0
2021/11/2,03:40,35795,35802,35788,35788,238,0

19:10  改为  07:10
22:15  改为  10:15
12:20  改为  00:20
00:35  改为  12:35
03:40  改为  15:40


谢谢
作者: Fit    时间: 2021-11-13 11:52

@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,2,* delims=," %%i in (1.txt) do (
        set mt=%%j
        set mmt=%%j
        set mt=!mt:~0,2!
        set mmt=!mmt:~2,3!
        set /a var=!mt!
        if !var! lss 12 (set /a var+=12)else (set /a var-=12)
        if !var! lss 10 (echo %%i,0!var!!mmt!,%%k)else (echo %%i,!var!!mmt!,%%k)
)
pause
作者: KLL    时间: 2021-11-13 12:40

您好谢谢您答复

显示所看到的数据都正确   能否写出成文本 2.txt
作者: zhanglei1371    时间: 2021-11-13 12:56

echo语句后面加>>2.TXT
作者: zhanglei1371    时间: 2021-11-13 12:57

echo语句后面加>>2.TXT
作者: flashercs    时间: 2021-11-13 12:58

  1. 2021/11/1,00:35
复制代码
减去12小时,日期应该改变
  1. 2021/10/31,12:35
复制代码

作者: Batcher    时间: 2021-11-13 12:59

回复 2# Fit


    猜测还是需要考虑跨天、夸月、跨年、闰年等情况
作者: KLL    时间: 2021-11-13 13:38

已解决   谢谢大家
作者: Fit    时间: 2021-11-13 14:13

回复 7# Batcher


    明白了
作者: idwma    时间: 2021-11-13 17:51

本帖最后由 idwma 于 2021-11-13 18:04 编辑

另一种偷懒的方式
  1. @echo off
  2. for /f "tokens=1,2,* delims=," %%i in (1.txt) do (
  3. for /f "delims=" %%a in ('powershell "'{0:yyyy/MM/d,HH:mm}' -f [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId([DateTime]::Parse('%%i %%j:00'), 'Eastern Standard Time', 'China Standard Time')"') do (
  4. echo %%a,%%k
  5. )
  6. )
  7. pause
复制代码

作者: cmd1152    时间: 2021-11-14 18:07

回复 3# KLL


    加速+输出2.txt
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1,2,* delims=," %%i in (1.txt) do (
  3.         set mt=%%j
  4.         set mmt=%%j
  5.         set mt=!mt:~0,2!
  6.         set mmt=!mmt:~2,3!
  7.         set /a var=!mt!
  8.         if !var! lss 12 (set /a var+=12)else (set /a var-=12)
  9.         if !var! lss 10 (echo %%i,0!var!!mmt!,%%k)else (echo %%i,!var!!mmt!,%%k)
  10. ))>2.txt
  11. pause
复制代码

作者: KLL    时间: 2021-11-22 00:35

Very Good   感谢先进指导




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2