2012-05-02 45 views
17

Có cách nào đơn giản để lấy một giá trị float đại diện cho phân số giờ và chuyển đổi chúng thành một đối tượng TimeSpan và ngược lại không? Ví dụ:Chuyển đổi một phao thành một khoảng thời gian

float oneAndAHalfHours = 1.5f; 
float twoHours = 2f; 
float threeHoursAndFifteenMinutes = 3.25f; 
float oneDayAndTwoHoursAndFortyFiveMinutes = 26.75f; 

TimeSpan myTimeSpan = ConvertToTimeSpan(oneAndAHalfHours); // Should return a TimeSpan Object 

Bất kỳ ý tưởng nào?

Trả lời

33

Bạn muốn có phương thức FromHours.

này có một đôi (chứ không phải là một float) và trả về một TimeSpan:

double hours = 1.5; 
TimeSpan interval = TimeSpan.FromHours(hours); 

Để có được tổng số giờ từ một TimeSpan sử dụng `TotalHours' tài sản:

TimeSpan interval = new TimeSpan(1, 15, 42, 45, 750); 
double hours = interval.TotalHours; 
12

Vì vậy, bạn đang tìm kiếm ... TimeSpan.FromHours(double)?

Tài liệu là bạn của bạn.

+8

Đó đồ đặt tên chỉ là điên . Vì vậy, không thể khám phá. Ai đã nghĩ rằng nếu tôi muốn tạo ra một 'TimeSpan' * từ * một số * giờ *, đó là những gì' TimeSpan.FromHours' sẽ làm gì? –

+1

@ JonSkeet: Tôi biết, nó làm nảy sinh tâm trí. Lippert đâu rồi ?! –

+1

Tôi sẽ trả tiền tốt để xem API ngày/giờ do Eric thiết kế. Tôi thực sự có nghĩa là hoàn toàn theo nghĩa đen ... Tôi nghĩ rằng giá trị tôi đạt được khi so sánh quyết định của mình với những quyết định tôi đã thực hiện trong Noda Time sẽ đáng giá đối với tôi. –

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