2010-09-30 14 views
6

Có ai biết cách xây dựng một DateTime trong .NET để là ngày đầu tiên của quý hiện tại không?.Phần tài chính NetTimeTime

+4

Điều đó sẽ phụ thuộc hoàn toàn vào cách bạn định nghĩa một phần tư. –

+0

Có bao nhiêu cách khác nhau để bạn có thể xác định một quý tài chính? – PhilBrown

Trả lời

6
public DateTime GetCurrentQuarter(DateTime date) 
{ 
    int startingMonthOfQuarter = (((date.Month - 1)/3) * 3) + 1; 

    return new DateTime(date.Year, startingMonthOfQuarter, 1); 
} 
3
 var currentTime = DateTime.Now; 
     var year = currentTime.Year; 
     DateTime[] quarterStarts = {new DateTime(year, 1, 1), new DateTime(year, 4, 1), new DateTime(year, 7, 1), new DateTime(year, 10, 1)}; 
     var currentStart = quarterStarts.Where(s => s < currentTime).Last(); 
+1

Điều này sẽ thất bại nếu nó được gọi chính xác vào lúc 12:00 nửa đêm ngày 1 tháng 1. Nó cũng sẽ thất bại nếu năm thay đổi tại một số điểm sau khi 'quarterStarts' được xác định. Bạn có thể muốn sửa đổi thử nghiệm của mình để chỉ bao gồm tháng và ngày. –

1

@yogesh là đúng, đây là những gì tôi sử dụng trong một sp sql:

CREATE FUNCTION [dbo].[fn_startOfQtr](@dt DATETIME) 
RETURNS DATETIME AS 
BEGIN 
    declare @ret DATETIME 
    declare @qtr int 

    set @qtr = ((month(@dt)-1)/3)+1 
    set @ret = cast(str(@qtr * 3 - 2) + '/1/' + str(year(@dt)) as DATETIME) 
    return @ret 
END 
Các vấn đề liên quan