[英]How to convert the timestamp from 24 hr format to 12 hr format in C#?
我想將時間戳從 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 將采用 MM/DD/YYYY HH:MM:ttt 格式(06/28/2013 19:59:000),如“1372429740”。 我想以 12 小時格式顯示時間戳,例如 MM/DD/YYYY hh:mm:ttt format(06/28/2013 07:59:000) like "1372386540"
請記住,您引用的格式僅用於顯示目的。 如果您想在計算中考慮此修改(使用 2 而不是 14),則會出現 12 小時的滯后。
如果只想顯示6/28/2013 2:29:00,可以使用如下字符串(計算的毫秒數不受影響):
string sTimeStamp = dt.ToString("MM/dd/yyyy hh:mm:ss tt");
如果您想要在時間計算期間執行此更改(不確定這樣做的原因),您必須修改生成dt
的方式(這一次,計算的毫秒數將受到影響:12h 滯后於上面的選項):
DateTime dt = new DateTime(Convert.ToInt32(Dyear), Convert.ToInt32(Dmonth), Convert.ToInt32(Dday), Convert.ToInt32(new DateTime(2000, 1, 1, Convert.ToInt32(strhour), 0, 0).ToString("hh:mm tt").Split(':')[0]), Convert.ToInt32(strminute), 0);
在第二種情況下, dt
將始終基於對輸入值的“12 小時理解”而形成; 例如:如果strhour
是 2 或 14,它將占 2(am)。
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.