if (!IsPostBack && !Page.IsCallback)
{
double OffsetHrs = GetTimeZoneOffsetFromCookie();
string dateFormat = ServiceManager.LocalizationService.GetString("AppHeaderTop", "DateFormat", "g");
CultureSelected CultureSelected = GetCultureSelected();
ASPxLabelCurrentTime.Text = DateTime.Now.ToUniversalTime().AddHours(-OffsetHrs).ToString(dateFormat);
if (CultureSelected.CultureCode != "en-US")
{
DateTimeFormatInfo usDtfi = new CultureInfo("en-US", false).DateTimeFormat;
DateTimeFormatInfo currentDtfi = new CultureInfo(CultureSelected.CultureCode, false).DateTimeFormat;
ASPxLabelCurrentTime.Text = Convert.ToDateTime(ASPxLabelCurrentTime.Text, usDtfi).ToString(currentDtfi.ShortDatePattern); //what can i Use here ?
}
说出ASPxLabelCurrentTime.Text
的输出
en-US
文化是11/2/2015 4:14 PM (70)
如果我选择特定的文化,我希望此日期时间11/2/2015 4:14 PM (70)
以特定的文化格式显示。
答案 0 :(得分:1)
你的问题似乎不清楚,但我试着试一试。
首先,这(70)
究竟是什么?这是从哪里来的? en-US
culture 无法解析此字符串,而不使用ParseExact
或TryParseExact
方法的字符串文字分隔符。另一方面,由于您正在ASPxLabelCurrentTime.Text
DateTime.Now.ToUniversalTime().AddHours(-OffsetHrs).ToString(dateFormat)
代码的结果,我不相信此(70)
部分确实是一个问题这个问题。
第二,如果我清楚地理解,问题似乎是使用DateTime.ToString(string)
方法。
ASPxLabelCurrentTime.Text = Convert.ToDateTime(ASPxLabelCurrentTime.Text, usDtfi)
.ToString(currentDtfi.ShortDatePattern);
// ^^^ Problem seems here
Okey让我们说成功解析ASPxLabelCurrentTime.Text
usDtfi
文化(en-US
),但与此.ToString(string)
方法,您实际上没有使用currentDtfi
设置,当您生成DateTime
的格式化字符串表示时,您正在使用CurrentCulture
设置。
来自DateTime.ToString(String)
doc;
将当前DateTime对象的值转换为其等效值 使用指定格式和格式的字符串表示 当前文化。
由于我们不知道GetCultureSelected
方法究竟返回什么,因此可能或可能与currentDtfi
不同
我强烈怀疑,你可以解决这个问题,将 文化作为ToString
方法中的第二个参数作为;
ASPxLabelCurrentTime.Text = Convert.ToDateTime(ASPxLabelCurrentTime.Text, usDtfi)
.ToString(currentDtfi.ShortDatePattern, currentDtfi);
如果此(70)
确实是您字符串的一部分,则需要使用ParseExact
或TryParseExact
方法提供相应的格式。
string s = "11/2/2015 4:14 PM (70)";
DateTime dt;
if(DateTime.TryParseExact(s, "MM/d/yyyy h:mm tt '(70)'", CultureInfo.GetCultureInfo("en-US"),
DateTimeStyles.None, out dt))
{
ASPxLabelCurrentTime.Text = dt.ToString(currentDtfi.ShortDatePattern, currentDtfi);
}