Sil*_*ght 187 .net c# datetime datetime-format gregorian-calendar
有问题的代码如下:
public static string ChangePersianDate(DateTime dateTime)
{
System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
return
PC.GetYear(dateTime).ToString()
+ "/"
+ PC.GetMonth(dateTime).ToString()
+ "/"
+ PC.GetDayOfMonth(dateTime).ToString()
+ ""
+ PC.GetHour(dateTime).ToString()
+ ":"
+ PC.GetMinute(dateTime).ToString()
+ ":"
+ PC.GetSecond(dateTime).ToString()
+ " "
????????????????
}
Run Code Online (Sandbox Code Playgroud)
如何从dateTime
价值中获取AM/PM ?
And*_*ndy 342
怎么样:
dateTime.ToString("tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
Xik*_*yoX 101
string.Format("{0:hh:mm:ss tt}", DateTime.Now)
Run Code Online (Sandbox Code Playgroud)
这应该给你时间的字符串值.tt应该附加上午/下午.
您还可以查看相关主题:
xan*_*tos 44
该DateTime
应始终内部在"美国"日历(Gregorian).所以,如果你这样做
var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)
你应该在更少的线上得到你想要的东西.
Bil*_*lal 29
使用字符串格式非常简单
上 .ToSTring("") :
如果你使用"hh" - >>小时,使用从12到12的12小时制.
如果你使用"HH" - >>小时,使用从00到23的24小时制.
如果你添加"tt" - >> Am/Pm指示符.
例如,从23:12转换到11:12 Pm:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt"); // this show 11:12 Pm
var res2 = d.ToString("HH:mm"); // this show 23:12
Console.WriteLine(res);
Console.WriteLine(res2);
Console.Read();
Run Code Online (Sandbox Code Playgroud)
等待一秒不是你需要关心的其他东西就是系统文化,因为在窗口上执行相同的代码与其他语言特别是不同的文化语言将使用相同的代码产生不同的结果
设置为阿拉伯语文化的窗口的例子将显示如下:
// 23:12م
م表示晚上(مساء的第一个).
在另一个系统文化取决于windows区域和语言选项上设置的内容,它将显示// 23:12 du.
你可以在windows区域和语言 - >当前格式(组合框)下更改窗口控制面板上的不同格式,并更改...应用它做你的应用程序的重建(执行),看看我在说什么.
那么如果当前系统的文化没有设置为英语,我可以强制在英语中显示Am和Pm Words吗?
只需添加两行即可: - >
第一步添加using System.Globalization;
代码
并修改以前的代码是这样的:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show 11:12 Pm
Run Code Online (Sandbox Code Playgroud)
InvariantCulture =>使用默认的英文格式.
另一个问题我想让pm用阿拉伯语或特定语言,即使我使用Windows设置为英语(或其他语言)区域格式?
阿拉伯语的例子:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
Run Code Online (Sandbox Code Playgroud)
这将显示// 23:12م
如果我的系统设置为英语区域格式,则为event.如果你想要另一种语言格式,你可以改变"ar-AE".每种语言及其格式都有一个列表.
例子:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
Run Code Online (Sandbox Code Playgroud)
如果您有其他问题,请告诉我.
小智 18
我知道这可能会非常晚......但它可能会帮助那些人
我想把AM PM作为约会的一部分,所以我用Andy建议的:
dateTime.ToString("tt");
Run Code Online (Sandbox Code Playgroud)
我用那个部分来构建一个保存我的文件的路径.我建立了我的假设,我会得到AM或PM而没有别的!
然而,当我使用PC时,它的文化不是英语..(在我的情况下是阿拉伯语)..我的应用程序失败,因为格式"tt"返回了一些新的非AM或PM(م或ص)..
所以解决这个问题的方法是通过添加第二个参数来忽略文化,如下所示:
dateTime.ToString("tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
..当然你必须添加:使用System.Globalization; 在你的文件顶部,我希望这将有助于某人:)
Jam*_*sco 11
非常简单
Date someDate = new DateTime();
string timeOfDay = someDate.ToString("hh:mm tt");
// hh - shows hour and mm - shows minute - tt - shows AM or PM
Run Code Online (Sandbox Code Playgroud)
+ PC.GetHour(datetime) > 11 ? "pm" : "am"
Run Code Online (Sandbox Code Playgroud)
对于您的示例,但有更好的方法来格式化日期时间.
来自:http://www.csharp-examples.net/string-format-datetime/
string.Format("{0:t tt}", datetime); // -> "P PM" or "A AM"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
288762 次 |
最近记录: |