2014-02-12 1 views
0
내가 뭘

을에 서식 지정이 적용되지 않는 follwing을 :및 String.format 서버

내 dev에 PC의 텍스트에
//TimeSpan rebateTime 
//int percentage 
string text = string.Format(
    CultureInfo.CurrentCulture, 
    "Rebate {0}% during {1:hh} h {1:mm} min", 
    percentage, 
    rebateTime; 

포함 : 내 dev에 테스트 서버 텍스트에

Rebate 32% during 05 h 00 min 

포함

: 내 공유 테스트 서버 텍스트에

Rebate 32% during 05 h 00 min 

에는 다음이 포함

Rebate 32% during 05:00:00 h 05:00:00 min 

어떻게 이런 일이 가능합니까?

+2

게시 한 코드가 유효하지 않습니다. 유효한 C#이 아니며 세 가지 형식 인수 중 두 가지만 지정했습니다. 문제를 보여주는 짧지 만 완전한 프로그램을 게시하십시오. –

+4

또한 서버에서 사용중인 .NET 버전을 알려주십시오. TimeSpan에 대한 사용자 지정 서식은 .NET 4에서만 도입되었다고 생각합니다. –

+0

@JonSkeet 팁! 그것은 그것이 문제인 것처럼 들린다. 확인하겠습니다. –

답변

0

여기 오류가 발생했습니다.

이 형식은 .NET 4에서만 작동합니다. 아마도 .NET 4가 공유 서버에 설치되지 않았을 것입니다.

을 입력하십시오.

static void Main(string[] args) 
    { 
     Console.WriteLine(String.Format(CultureInfo.CurrentCulture, "Rebate {0}% during {1:hh} h {1:mm} min", 0.15, new TimeSpan(DateTime.Now.Ticks))); 
     Console.ReadKey(); 
    } 

출력 :이 문제를 확인하려면

, 간단한 콘솔 프로젝트를 만들

.NET 4

"Rebate 0.15% during 11 h e 47 min" 

.NET 3.5

"Rebate 0,15% during 735275.11:48:48.7362198 h 735275.11:48:48.7362198 min" 
0

다른 사람이 가지고있는 지적했다, 시간 내가 오늘 똑같은 문제를 가지고 있었다 공교롭게도

string.Format 
(
    "Rebate {0}% during {1:##} h {2:##} min", 
    percentage, 
    rebateTime.TotalHours, 
    rebateTime.Minutes 
); 
0

: 스팬은 사용자 정의 형식화하는 그러나 .NET 4. 전에, 대체 솔루션이 전혀 복잡하지가 않았다.

public static string ToReadableString(this TimeSpan span) 
    { 
     string formatted = string.Format("{0}{1}{2}{3}", 
      span.Duration().Days > 0 ? string.Format("{0:0} day{1}, ", span.Days, span.Days == 1 ? String.Empty : "s") : string.Empty, 
      span.Duration().Hours > 0 ? string.Format("{0:00} hour{1}, ", span.Hours, span.Hours == 1 ? String.Empty : "s") : string.Empty, 
      span.Duration().Minutes > 0 ? string.Format("{0:00} minute{1}, ", span.Minutes, span.Minutes == 1 ? String.Empty : "s") : string.Empty, 
      span.Duration().Seconds > 0 ? string.Format("{0:00} second{1}", span.Seconds, span.Seconds == 1 ? String.Empty : "s") : string.Empty); 

     if (formatted.EndsWith(", ")) formatted = formatted.Substring(0, formatted.Length - 2); 

     if (string.IsNullOrEmpty(formatted)) formatted = "0 seconds"; 

     return formatted; 
    } 

가이 시간 범위에 사용되는 경우는 다음과 같은 형식의 시간 (X 일 X 시간 X 분 x 초)을 얻을 것이다 무언가가 가능한이됩니다되지 않을 때마다 : 내가 확장 방법을 사용하여 고정 숨어있다.

+0

그 이유는 실제로 나도 .NET 3.5 프레임 워크를 사용했기 때문입니다 (SharePoint 2003 마이그레이션 프로젝트의 경우처럼). – woutervs