2010-02-05 2 views
0
private void buildGrid() 
{ 
    this.currentActivities = new XSPIncidentActivityModel.XSPIncidentActivityEntities(BuildEntityConnectionString("XSMDSN")).XSP_IncidentActivity.Where(ia => ia.IncidentID == this.IncidentID).OrderBy(ia=>ia.CompletionDate).ToList(); 

    foreach (XSPIncidentActivityModel.XSP_IncidentActivity act in this.currentActivities) 
    { 
     act.CompletionDate.AddHours(this.TimeZoneOffset); 


     if (act.CompletionDate.IsDaylightSavingTime()) 
     { 
act.CompletionDate.AddHours(-1).ToString("MMM dd, yyyy"); 
     } 
    } 

    CommonGrid1.BindDataSource(this.currentActivities); 
} 

Я должен conert объект типа DateTime в определенном формате, т.е., currentl, у отображает 9/14/2009 12:20:30 PMкак преобразовать DateTime в определенном формате

я должен отобразите таким образом 14.09.2009 12:20

путем преобразования его в строку string s = String.Format ("{0: g}", act.CompletionDate.AddHours (this.TimeZoneOffset)); Я могу отображать дату без секунд.

Но так как данные поступают из SQL-сервера я должен Dislay на DATETIME объект (act.CompletionDate) в этом конкретном формате

я попытался это, но она работает IsNot строка [] expectedFormats = { «G» , "g", "f", "F"}; IFormatProvider culture = new CultureInfo ("en-GB", true); act.CompletionDate = DateTime.ParseExact (s, expectedFormats, culture, DateTimeStyles.AllowWhiteSpaces);

ответ

1

Предполагая act.CompletionDate имеет тип System.DateTime, ваши строки кода, вызывающие act.CompletionDate.AddHours ничего не делают, поскольку метод AddHours не изменяет экземпляр, на который он вызывается. Вместо этого возвращается новое DateTime, в которое добавлены часы. Вы можете исправить это, делая что-то вроде: -

act.CompletionDate = act.CompletionDate.AddHours(-1) 

Аналогично, звонки в ToString также ничего не добьются, так как метод ToString не делает ничего к примеру, на которой она вызывается. Он возвращает новый строковый объект, созданный на основе значения DateTime.

Вместо этого, чтобы устранить проблему форматирования, попробуйте установить ItemStyle.DataFormatString для столбца в GridView, который отображает дату. Для примера того, как это сделать, посмотрите статью MSDN GridView Examples for ASP.NET 2.0: Formatting the GridView.

+0

пожалуйста, вы можете сказать мне, как установить соответствующее форматирование про perty на столбце сетки. – xrx215

+0

отредактированы по вашему запросу –

1

Если вы хотите установить формат культуры для всех дат (и другие локали конкретной продукции), то вы можете сделать это в web.config для всего приложения:

<globalization uiCulture="en" culture="en-GB" /> 

См http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

2

Некоторые примеры, которые могут помочь

public static string Change_to_date_yymmdd(DateTime dt) 
    { 
     //string strTest = stringTest(); 
     string format = "yyMMdd"; 
     string date = dt.ToString(format, DateTimeFormatInfo.InvariantInfo); 
     return date; 
    } 

    public static string Change_to_time_24hr60min60sec60ms(DateTime dt) 
    { 
     string format = "HHmmssff"; 
     string time = dt.ToString(format, DateTimeFormatInfo.InvariantInfo); 
     return time; 

    } 
    public static string Change_to_rangevalidator(DateTime dt) 
    { 
     //string strTest = stringTest(); 
     string format = "yyyy-MM-dd-HH-mm-ss"; 
     string date = dt.ToString(format, DateTimeFormatInfo.InvariantInfo); 
     return date; 
    } 
+0

act.completiondate - объект datetime, и я должен отображать его как объект datetime, не преобразовывая его в строку – xrx215

+0

. Я не вижу, как это может помочь –

0
string date = DateTime.Now.ToString("M/d/yyyy hh:mm tt"); 
// prints in this format 9/14/2009 12:20 PM 
Смежные вопросы