2010-06-19 2 views
3

DateTime 유형에 두 개의 변수가 있는데이를 합산하여 어떻게 할 수 있습니까? DateTime이 없으므로 컴파일 오류가 발생합니다. + =C# DateTime operator + =

+0

도 참조 토론을 [시간 범위 불필요한인가?] (http://stackoverflow.com/questions/1448976) – ChrisW

답변

3

그냥 메흐 다드의 대답에 코멘트에 대답 - 그래, 모두이로 간주되어야하는 것 같습니다 TimeSpan 대신 DateTime 값을 ... 그리고 네, 시간 범위를 함께 추가 할 수 있습니다.

.NET 4를 사용하는 경우 사용자 지정 형식 문자열을 사용하여 줄의 첫 번째 부분을 구문 분석 할 수 있습니다 (예 : "00 : 00 : 01.2187500".

샘플 코드 :

using System; 
using System.Globalization; 

public class Test 
{ 
    static void Main() 
    { 
     string line1 = "00:00:01.2187500 CA_3"; 
     string line2 = "00:00:01.5468750 CWAC_1"; 

     TimeSpan sum = ParseLine(line1) + ParseLine(line2); 
     Console.WriteLine(sum); 
    } 

    static TimeSpan ParseLine(string line) 
    { 
     int spaceIndex = line.IndexOf(' '); 
     if (spaceIndex != -1) 
     { 
      line = line.Substring(0, spaceIndex); 
     } 
     return TimeSpan.ParseExact(line, "hh':'mm':'ss'.'fffffff", 
            CultureInfo.InvariantCulture); 
    } 
} 
+1

그런데 CA_3 및 CWAC_1은 무엇입니까? 그것들은 표준 또는 OP 입력 형식일까요? –

+0

@Mehrdad : 그들은 내가 잘 아는 사람이 아닙니다. 나는 그들이 중요하지 않다고 가정하고 있어요 :) –

+0

그는 timeSpan이 parseExat 메소드를 가지고 있지 않다고 말합니다 ... – aharon

7

두 개의 DateTime 값을 함께 사용할 수 없습니다. 그것은 아무 의미도 없을 것입니다. DateTime은 단일 시점을 나타내고 TimeSpan은 지속 기간을 나타냅니다. 기간에 특정 시점을 추가하면 다른 시점이됩니다. 당신은 DateTime 값 –에 TimeSpan 값을 추가 할 수 있습니다 그것은 이 경우 지원 +=을 수행

dateTime += timeSpan; 
+0

00 : 00 : 01.2187500 CA_3 00 : 00 : 01.5468750 CWAC_1 파일에 있습니다. timeSpan으로 시간을 읽고 추가 할 수 있습니까? – aharon

+0

@ahront :'TimeSpan'은'DateTime'처럼 수년, 달, 일, 시간이 걸리는 많은 생성자를 가지고 있습니다. 그래서 네, 기간 값을'TimeSpan'으로 읽고'DateTime'에 추가해야합니다. –

+2

@Merhrdad : Err, no. 'TimeSpan' 생성자에서 실제 측정 단위가 아니기 때문에 (길이가 다릅니다) 몇 년 또는 몇 달을 사용할 수 없습니다. –

0

당신은 DateTime.ToOADate Method 사용할 수 있습니다

DateTime D1 = DateTime.Today; 
DateTime D2 = DateTime.Today.AddMonths(2); 

double days = D1.ToOADate() + D2.ToOADate();