C# 如何将(错误的)12:00时间转换为2400时间?

C# 如何将(错误的)12:00时间转换为2400时间?,c#,time-format,C#,Time Format,我这里有点问题,我自己就要放弃了,我希望这里的专家能帮我挽救我的数据 我有一个收集财务数据的程序。数据格式如下所示 时间、数据 时间、数据 它是一种文本格式,我有大约30个文件,每个大约1-2GB。我遇到的问题是,当我第一次启动它时,我意外地将其格式化为12小时时间格式“yyyy/MM/dd hh:MM:ss.fff”,而不是2400小时时间格式“yyy/MM/dd hh:MM:ss.fff” 现在我的数据是12小时格式,没有am/pm 我现在需要编写一个程序,将12小时格式转换为2400格式

我这里有点问题,我自己就要放弃了,我希望这里的专家能帮我挽救我的数据

我有一个收集财务数据的程序。数据格式如下所示

时间、数据

时间、数据

它是一种文本格式,我有大约30个文件,每个大约1-2GB。我遇到的问题是,当我第一次启动它时,我意外地将其格式化为12小时时间格式“yyyy/MM/dd hh:MM:ss.fff”,而不是2400小时时间格式“yyy/MM/dd hh:MM:ss.fff”

现在我的数据是12小时格式,没有am/pm

我现在需要编写一个程序,将12小时格式转换为2400格式。我面临的问题如下:

  • 数据大致按时间顺序排列。时间戳来自数据服务器,取决于互联网流量,顺序可能为1秒左右。但考虑到我收集的数据量,可能会有多达100000行出现故障

  • 如果没有上午/下午,中午12点或者中午12点(我需要从中减去12个小时)或者下午12点,我什么都不做

  • 文件的开始可能在任何给定的时间开始(我手动打开程序进行收集,因此时间不准确),因此如果不向前看并看到日期的变化,我将不知道10:00是上午还是下午

  • 我试图转换之前的时间,但没有成功。有人能帮我提供一些代码或伪代码吗


    编辑:现在我可以准确地说出我的问题,我需要从数据中找出我是处于am模式还是PM模式,如果没有那么多行,我可能可以使用excel并更正它,手动查看接下来的几行并推断它是am模式还是PM模式。对于1/2亿行,我需要对它进行逻辑编程,以确定它是AM模式还是PM模式,我很难做到这一点。在过渡时间里,我该如何处理那些不正常的几分钟呢?

    12am是0000,12pm是1200,但1am是0100,1pm是1300(所以不仅仅是从12am减去12)

    如果您将时间读入一个DateTime对象,它与使用.AddHours(double)一样简单

    myDateTime=myDateTime.AddHours(12);//添加12小时
    //或
    myDateTime=myDateTime.AddHours(-12);//减去12小时
    
    你如何决定你是在上午还是下午模式取决于你,我不太明白为什么你不能解决这个问题,因为你说数据是在任何时候生成的

    如果在字符串上运行“yyyy/MM/dd hh:MM:ss.fff”(12小时格式,没有am/pm)

    • 如果有效,您知道:日期仍然处于am/pm模式或24小时制的am模式
    • 如果失败,您知道:日期为24小时模式,时间为下午(因为它将超出12小时模式的范围)
    使用格式“yyyy/MM/dd HH:MM:ss.fff”应始终解析字符串,并且您知道以下内容:

    • 如果真的是上午时间,你有正确的日期
    • 如果时间超过12:59,您将获得下午的正确日期(因为它以24小时格式报告)
    • 如果日期应为下午时间,但读取为上午时间,则您知道您使用的是12小时格式,需要检查前面或后面的行,以确定是上午时间还是下午时间
    您可能可以根据该信息和任何其他日期/时间信息设计某种逻辑,以获得所需的结果

    编辑:

    您可以查看文件修改时间(或创建时间,如果可以的话),该时间应为AM或PM。然后您应该知道第一个(或最后一个)条目是否为AM/PM,然后可以从那里继续

    示例:如果最后一条记录的时间是上午11:00,而下一行是当天的3:00,则您将知道它是下午3:00。
    但是,如果日期发生变化,您可能无法判断条目是否从上午/下午开始。查看给定日期的所有数据可能可以为您提供答案。如果一天的条目仅从上午或下午开始,您将无法确定。

    假设记录之间的间隔时间不超过12小时,您的转换程序just需要跟踪其当前查看的是AM还是PM时间。然后,每当小时数达到12或变为较低的数字时,您就切换AM/PM标志。您必须提供一个参数,告诉它从哪种模式开始。

    文件创建时间是否与正确的第一行时间一致?时间顺序有多粗略,i、 例如,记录是否会超出顺序超过一分钟?请参阅此文档:@my other me,我从未想过使用创建时间作为参考,我将使用该@Les进行调查,它将超出顺序大约几秒钟,但不会超过1分钟@Plater,谢谢,我有点明白你的意思,我从未想过这一点,需要它现在我明白你的意思了,我回到第一步。我面临的问题是,我需要从数据中找出我是处于am模式还是PM模式,如果没有那么多行,我可能可以使用excel并更正它,手动查看接下来的几行并推断它是am模式还是PM模式。有12亿行,我需要对它进行逻辑编程,以确定它是AM模式还是PM模式,我很难做到这一点。