C# 需要以am pm格式而不是24小时格式显示时间
我有以下以24小时格式返回时间的代码。我想要12小时上午下午的格式C# 需要以am pm格式而不是24小时格式显示时间,c#,C#,我有以下以24小时格式返回时间的代码。我想要12小时上午下午的格式 public void LogProcess() { string Reason = null; Console.WriteLine("Enter your name:"); string UserName = Console.ReadLine(); DateTime t = DateTime.Now; int hr = t.Hour;
public void LogProcess()
{
string Reason = null;
Console.WriteLine("Enter your name:");
string UserName = Console.ReadLine();
DateTime t = DateTime.Now;
int hr = t.Hour;
int m = t.Minute;
您可以在这方面指导我吗。解决方案1:您可以使用
ToString()
函数来获取日期时间
字符串所需的部分
1.您需要使用smallhh
以12
Hour格式获取小时数。
2.您需要使用tt
获取AM
或PM
字符串
试一试
有关完整时间信息:
DateTime dt = DateTime.Now;
int hours = Convert.ToInt32(dt.ToString("hh"));
int minutes = dt.Minute;
int seconds = dt.Second;
string AMorPM = dt.ToString("tt");
解决方案2:您可以使用24小时值和12执行mod操作,以获得12小时值
注意:如果结果为0
,则需要将结果(mod操作后)映射到1
int hours = (dt.Hour % 12 != 0) ? dt.Hour : 1;
string AMorPM = dt.ToString("tt");
DateTime没有隐式格式,它只是一个
DateTime
值。。但是字符串已经存在。您可以使用with方法获取您的小时的12小时时钟表示形式
var dt = DateTime.Now;
string hr = dt.ToString("hh");
string m = dt.ToString("mm");
有关更多信息,请参阅
(dateHour%12)
@germ:Nope,这不会提供正常的12小时格式,即1-12,而不是0-11。@germi为什么?已经有一个工具可以获取正确的值。@JonSkeet啊,对了。我从不使用它,只想到午夜,在这种情况下,我通常说0:。。。但是你当然是对的。@Bharadwaj:是的,这是有效的,但是OP试图将单个单位捕获到seprate变量中。转换为字符串并返回是获取小时/分钟/秒部分的一种非常糟糕的方式。@Sudhakardipudi是的,但是我在OP的问题中看到了我想要12小时am pm格式的
。@Jonsket:我同意jon,但是为了在12小时fomrat中获得小时数,我找不到更好的方法。@Sudhakartrapudi:我会使用DateTime.hour%12
然后使用特例0->12映射。除非你不应该调用DateTime,因为时间可能在两者之间变化。例如,在下午3点左右,你可能会以“2”和“0”结束,而不是“2”和“59”或“3”和“0”。@JonSkeet噢,说得好,Jon。更新。谢谢
var dt = DateTime.Now;
string hr = dt.ToString("hh");
string m = dt.ToString("mm");