2011-05-20 47 views
9

Tôi muốn lưu số giờ của người dùng làm việc trong cột cơ sở dữ liệu varchar, nhưng theo mặc định, giá trị được định dạng bao gồm ngày nếu số giờ lớn hơn 24. Tôi chỉ muốn tổng số giờ.Làm cách nào để định dạng một khoảng thời gian để hiển thị tổng số giờ?

Ví dụ: nếu người dùng làm việc 10:00:00 ngày hôm nay, sau đó 13:00:00 giờ ngày mai và 3:30:00 giờ ngày sau ngày mai thì tổng số được định dạng tôi muốn là 26:30: 00. Thay vào đó, tôi thấy 1.2: 30: 00.

Tôi làm cách nào để có được định dạng mình muốn?

Ngoài ra, khi tôi lưu giá trị 40:00:00 trong cơ sở dữ liệu theo cách thủ công và cố đọc nó vào một số TimeSpan sau đó, tôi gặp lỗi.

Làm cách nào tôi có thể lưu giờ trong cơ sở dữ liệu theo cách mình muốn và vẫn có thể đọc lại vào một số TimeSpan sau?

+0

Bạn có yêu cầu về dữ liệu trong cơ sở dữ liệu hoặc 'cấu trúc TimeSpan' trong BCL? Câu hỏi của bạn là khó hiểu. – Oded

+0

Như được đề xuất [ở đây] (http://stackoverflow.com/a/744929/897326), tốt nhất là lưu trữ bọ ve trong cơ sở dữ liệu, thay vì định dạng TimeSpan. Sau đó, bạn không có vấn đề này. – Neolisk

+0

Bỏ phiếu cho đề xuất tính năng, sau đó đợi một thập kỷ để MS đi vòng quanh nó: http://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/4050034-add-standard-formats-to -timespan-which-allow-the-f –

Trả lời

12

Hãy thử TimeSpan.TotalHours

String timeStamp = "40:00:00"; 
var segments = timeStamp.Split(':'); 

TimeSpan t = new TimeSpan(0, Convert.ToInt32(segments[0]), 
       Convert.ToInt32(segments[1]), Convert.ToInt32(segments[2])); 
string time = string.Format("{0}:{1}:{2}", 
      ((int) t.TotalHours), t.Minutes, t.Seconds); 
+0

@Bala nó nhận được một cái gì đó như vậy ... (40.166666663) (nó là một ví dụ) và làm thế nào để tôi chuyển đổi 40:00:00 này để timespan? tôi đã thử timepan x = timespan.Parse ("40:00:00"); nó nhận được một lỗi – angel

+0

@angel 'TimeSpan.FromHours (40.0); ' –

+0

@angel cho số 40.166666, bạn có thể sử dụng TimeSpan.TotalHours làm integet và TimeSpan.Minutes và TimeSpan.Seconds để định dạng chuỗi theo cách bạn muốn . –

10

Bạn có thể làm một cái gì đó như:

TimeSpan time = ...; 
string timeForDisplay = (int)time.TotalHours + time.ToString(@"\:mm\:ss"); 
+0

time = ??? i writ time = "40:00:00 "và tôi không thể phân tích cú pháp nó – angel

+3

nghiêm túc? ...' TimeSpan time = TimeSpan.FromHours (40) + TimeSpan.FromMinutes (30) ' – CodingWithSpike

+3

Hoặc thậm chí dễ dàng hơn:' TimeSpan time = new TimeSpan (40, 30, 0) 'http://msdn.microsoft.com/en-us/library/bk8a3558.aspx – CodingWithSpike

Các vấn đề liên quan