在数组中aa中,aa[0]为2010-06-15  aa[1]为15:48:01请教如何将以上数据合并为2010-06-15 15:48:01。并且在小时上增加8小时,并且保留秒。我的代码如下,我只在aa[1]上增加了8小时:
 DateTime dthour= DateTime.Parse(string.Format("{0}", aa[1])).AddHours(8);断点调试后发现:dthour的值已经自动为:2010-06-16 23:48:00,秒也被格式为0了。如何将aa[0],aa[1]合并到一起,并且在aa[1]的小时上增加8小时,如果正好大于24小时的话,aa[0]也要增加1天。并且秒不被格式为0.谢谢大家帮忙了。。

解决方案 »

  1.   

    DateTime dthour = DateTime.Parse(aa[0].ToString() + aa[1].ToString()).AddHours(8);
      

  2.   

    DateTime dthour = DateTime.Parse(aa[0].ToString()+ " " + aa[1].ToString()).AddHours(8);
      

  3.   

    string s="2010-06-15 15:48:01";
    DateTime dt= DateTime.Parse(s).AddHours(8);
      

  4.   

    其实,如果你希望是转为当地时间,可以不要+8,否则软件出国就不准了。可以这样写
    DateTime dthour = DateTime.Parse(aa[0].ToString()+ " " + aa[1].ToString(),null,System.Globalization.DateTimeStyles.AssumeUniversal);本着受人渔的角度,多说几句。
    楼主要看看C#高效编程。
    string.Format("{0}",obj);
    这样的写法最终还是会调用ToString的。如果你习惯这样写,遇到值类型的,就会有装箱,然后拆箱调用ToString的情况,这样写法是不建议的,最好还是直接拼字符串,或是手工调用ToString()方法。
      

  5.   

    再多说一点,为什么string.Format,传入的参数是值类型会有装箱。你看看string.Format的函数签名就知道了
    public static string Format(string format, params object[] args);
    你的参数都会转换为object进行一次装箱,然后依次调用ToString(),替换各市字符串中对应的{编号}部分。
      

  6.   

    如果你数据库里本来就是当地时间就不要再费事了。如果记录的是utc时间。你最好按我的写法,DateTime.Parse的时候指定明确。当前是用UTC时间在传入的。这样会自动的根据当前的系统设置的时区进行转换。你以后ToString的就是当地时间。
      

  7.   

    谢谢wuyazhe大侠,我就是根据您写的来的。。调试正常。。谢谢您。。非常的感谢。本贴我已经结分了。刚才GOOGLE了一下System.Globalization.DateTimeStyles.AssumeUniversal没有具体的讲解。。
      

  8.   

    msdn就有
    http://msdn.microsoft.com/zh-cn/library/91hfhz89(VS.90).aspx
    AssumeUniversal 如果分析的字符串中未指定任何时区,则假定该字符串表示 UTC。