我在这里遇到了一些问题,我即将自己放弃,我希望这里的专家可以帮助我挽救我的数据。
我有一个收集一些财务数据的程序。数据格式如下
时间,数据
时间,数据
...
它是文本格式,我有大约30个文件,每个大约1-2 GB。我遇到的问题是当我第一次启动它时,我不小心将其格式化为12小时时间格式“yyyy / MM / dd hh:mm:ss.fff”而不是2400小时时间“yyyy / MM / dd HH:mm :SS.FFF”
现在我的数据是12小时格式而没有上午/下午。
我现在需要编写一个程序将12小时格式转换为2400格式。我面临的问题如下:
数据大致按时间顺序排列。时间戳来自数据服务器并且取决于互联网流量,订单可能是1秒左右。但考虑到我收集的数据量,最多可能有100000行无序。
没有上午/下午,1200可能是上午12点(我需要减去它12小时)或1200点我不做任何事情。
文件的开头可以在任何给定的时间开始(我手动打开程序来收集,所以时间不准确),所以没有展望并看到日期变化,我不知道是否上午10点是上午或下午
我尝试转换之前的时间但未成功。任何人都可以通过提供一些代码或伪代码来帮助我吗?
编辑:现在我可以准确地说出我的问题,我需要弄清楚我是处于AM模式还是PM模式,如果没有那么多行,我可以使用excel并纠正它,手动查看在接下来的几行中推断出它是AM模式还是PM模式。有了20亿行,我需要对其进行逻辑编程以确定它是AM还是PM模式,我很难这样做。如何处理过渡期间出现故障的那几分钟?答案 0 :(得分:1)
假设记录之间的间隔时间不超过12小时,您的转换程序只需要跟踪它当前是在查看AM还是PM时间。然后,当小时数达到12或环绕到较低的数字时,您可以切换AM / PM标志。您必须提供一个参数,告诉它从哪个模式开始。
答案 1 :(得分:-1)
如果你读到 DateTime 对象的时间,就像使用.AddHours(double)
一样简单myDateTime=myDateTime.AddHours(12);//Add 12 hours
//Or
myDateTime=myDateTime.AddHours(-12);//Subtract 12 hours
您如何决定是处于AM还是PM模式取决于您,我不太理解为什么您无法解决问题,因为您说数据是随时生成的。
我会说如果你在字符串上运行“yyyy / MM / dd hh:mm:ss.fff”(12小时格式,没有am / pm)。
使用格式“yyyy / MM / dd HH:mm:ss.fff”应始终解析您的字符串,并且您知道以下内容:
您可以根据该信息和任何其他日期/时间信息设计某种逻辑,以获得所需的结果。
编辑:
您可以做的是查看文件修改时间(或创建时间,如果可以),它应该为您提供AM或PM。然后,您应该知道第一个(或最后一个)条目是上午/下午,然后可以从那里继续。
示例:如果最后一个条目的时间是11:00(AM),然后下一行是同一天的3:00,您将知道它是3:00(PM)。 但是,如果当天发生变化,您可能无法判断该条目是否在上午/下午开始。查看给定日期的所有数据可能会给您答案。如果当天的参赛作品仅来自AM或仅PM,您将无法确定。