2009-08-20 35 views
11

Có thư viện nào tồn tại để phân tích cú pháp thời gian đọc được của con người thành một TimeSpan .net không?C# Thư viện để phân tích cú pháp khoảng thời gian có thể đọc được của con người

tôi cần cái gì đó sẽ phân tích chuỗi như

30 days 
1 week 
5 hours 

Có một điều như vậy tồn tại? Nó có lẽ không quá khó để viết bản thân mình, nhưng nếu một cái gì đó được ra khỏi đó, nó sẽ dễ dàng hơn nhiều!

Tôi hiện không cần chức năng như "30 ngày, 3 giờ, 5 phút", chỉ là một giá trị, nhưng nó không thể làm tổn thương!

+0

bạn có ý gì khi phân tích cú pháp ở đây? chuyển đổi sang giá trị datetime khác? –

+0

Chỉ cần làm rõ, nó sẽ là tốt đẹp để có thể chỉ định một cái gì đó như "30 ngày, 32 giờ, 5 phút", nhưng yêu cầu của tôi, tại thời điểm này rất đơn giản như trong ví dụ của tôi ở trên. – Gareth

+0

@Wael: Có, tôi muốn phân tích cú pháp đó thành một phiên bản TimeSpan. – Gareth

Trả lời

3

Tôi đã bẻ khóa vào lúc này, tôi đã chơi với các trình phân tích cú pháp vì tôi không biết gì về chúng nên đừng mong đợi chất lượng. Nhưng bạn có thể lấy mã ở đây: http://timestamper.codeplex.com/

Tôi đã xem xét nó một lúc, nhưng tôi khá chắc chắn rằng nó có thể làm tất cả những thứ bạn đã đề cập ở trên.

Chỉnh sửa:

Chỉ cần lưu ý rằng bạn muốn đối tượng timepan được trả lại và không phải là ngày giờ. Mã tôi đã cung cấp sẽ trả về một DateTime reletive cho đến hôm nay, tức là

"2 days" sẽ là: DateTime.Now.AddDays (2);

Ít nhất tôi nghĩ rằng đây là những gì đã làm, hoàn toàn có thể chắc chắn. Nếu đây là trường hợp, bạn chỉ có thể nhận được khoảng thời gian giữa hai DateTimes.

+0

Tuyệt vời, cảm ơn Owen. Trong khi tôi đã đi và viết một trình phân tích cú pháp * rất * đơn giản cho TimeSpan trong khi đó, đây là một thư viện rất tiện dụng để có xung quanh! – Gareth

+2

Không phải lo lắng.Trên thực tế, nếu bạn cần nó để làm bất cứ điều gì nhiều hơn tôi có thể có một chơi với nó tại một số điểm trong thời gian. – Owen

+1

@Owen sẽ rất tuyệt nếu nó có sẵn trên NuGet;) – MattDavey

0

Vâng, tôi biết rằng datejs mã javascript hoạt động thực sự tốt cho những ngày như thế. Bạn có thể nhìn vào nó cho cảm hứng cho mã C#. Không chắc chắn nếu điều đó giúp điều đó nhiều; nhưng có thể thú vị.

Xem www.datejs.com

0

Tôi biết rằng bạn đang tìm kiếm một thư viện để làm điều này nhưng có vẻ như các những người thích cú pháp này là các nhà phát triển Ruby và họ cũng gắn bó với Ruby. Nếu bạn thực sự muốn làm điều này, nó khá đơn giản để làm một cái gì đó tương tự với phần mở rộng .Net đó là một chút dễ đọc hơn. Hãy xem bài viết này http://haacked.com/archive/2007/05/24/ruby-like-syntax-in-c-3.0.aspx

Ngoài ra nếu bạn không thích cú pháp trong bài viết thì tất cả những gì bạn cần làm là tạo một trình phân tích cú pháp chuyển đổi thành các dấu, có thể được sử dụng bởi lớp trình xây dựng timespan.

0

Không thể áp dụng trực tiếp, nhưng my company đã phát triển một số .NETlibrary thực hiện việc này cho các ngày. Một đối tác làm việc cho các nhịp (nhiều hơn hoặc ít hơn chính xác những gì bạn đang yêu cầu) được lập kế hoạch cho "khi chúng tôi nhận được xung quanh để cần nó". Nếu có đủ sự quan tâm, điều đó có thể trở nên sớm hơn.

+0

Cuối cùng tôi đã kiểm tra, trang web được tạo bằng công cụ trang phục. nhưng để tránh phá vỡ các liên kết, phần mở rộng PHP vẫn được sử dụng. Dù sao chúng tôi là một cửa hàng hỗn hợp cho somethings. – BCS

+0

Thats bởi vì đó là những gì php là tốt cho, khách hàng phải đối mặt với các trang web với rất ít thú vị xảy ra dưới mui xe. – Owen

+0

Dường như liên kết này bị hỏng. Bạn có một liên kết thay thế? – derekantrican

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