0

24 時間形式から 12 時間形式のタイムスタンプに変換したいです。

 date = Dyear + "" + Dmonth + "" + Dday + " " + strhour+""+strminute+""+"00"; (20130628 142900)
DateTime dt = new DateTime(Convert.ToInt32(Dyear), Convert.ToInt32(Dmonth), Convert.ToInt32(Dday), Convert.ToInt32(strhour), Convert.ToInt32(strminute), 00);(6/28/2013 2:29:00 PM)
TimeSpan ts = dt.Subtract(new DateTime(1970, 01, 01, 00, 00, 00));(15884.14:29:00)
String sTimeStamp = ts.TotalMilliseconds.ToString("0"); (1372429740000)

上記の sTimeStamp は、「1372429740」のように MM/DD/YYYY HH:MM:ttt (2013/06/28 19:59:000) の形式になります。「1372386540」のようにMM/DD/YYYY hh:mm:ttt形式(06/28/2013 07:59:000)のような12時間形式でタイムスタンプを表示したい

4

2 に答える 2

0
    internal static string ConvertTo_12_Format(string str)
    {
        //using system function
        DateTime dt = DateTime.ParseExact(str, "HH:mm", System.Globalization.CultureInfo.InvariantCulture);
        string s = dt.ToString("hh:mm");


        //using logic
        StringBuilder sb = new StringBuilder();
        int h1 = (int)str[0] - '0';
        int h2 = (int)str[1] - '0';

        string Meridien;
        int hh = h1 * 10 + h2;

        if (hh < 12)
        {
            Meridien = "AM";
        }
        else
            Meridien = "PM";

        hh %= 12;
        int c1 = (int)str[3] - '0';
        int c2 = (int)str[4] - '0';

        if (hh == 0)
        {
            sb.Append("12:");
            //18:30
            // Printing minutes and seconds 
            sb.Append(c1.ToString() + c2.ToString());
        }
        else
        {
            if(hh < 10)
            {
                sb.Append("0" + hh + ":");
                sb.Append(c1.ToString() + c2.ToString());
            }else
            {
                sb.Append(hh + ":");
                sb.Append(c1.ToString() + c2.ToString());
            }
        }

        sb.Append(" "+Meridien);

        return sb.ToString();

    }
于 2021-02-05T13:36:52.120 に答える