문제

다음과 유사한 .NET 날짜/시간 파서에 대해 아는 사람이 있습니까? Ruby에 대한 만성 ("내일" 또는 "다음 주 목요일 오후 3시"와 같은 항목을 처리합니까?)

메모:저는 Ruby를 작성하지만(이것이 제가 Chronic에 대해 아는 방식입니다) 이 프로젝트는 .NET을 사용해야 합니다.

도움이 되었습니까?

해결책

우리는 내부 프로젝트에서 귀하가 찾고 있는 것을 정확하게 개발했습니다.충분한 필요성이 있을 경우 이를 공개할 생각입니다.자세한 내용은 이 블로그를 참조하세요. http://precisionsoftwaredesign.com/blog.php.

관심이 있으시면 언제든지 저에게 연락해주세요:contact@precisionsoftware.us

이 라이브러리는 이제 SourceForge 프로젝트입니다.페이지 위치:

http://www.SourceForge.net/p/naturaldate

어셈블리는 다운로드 섹션에 있으며 소스는 Mercurial에서 사용할 수 있습니다.

다른 팁

그렇지는 않지만 다음과 같은 Java 포트가 있습니다. 만성.다른 것이 없다면 그것은 당신 자신에게 좋은 출발점을 제공할 수 있습니다.아니면 다음과 같은 반자동 Java-C# 변환기를 사용할 수도 있습니다. 문어 번역하는 것을 돕기 위해.(또는 아는 사람이 있으면 더 좋은 것입니다.)

좋습니다. 또 다른 가능한 방법은 다음과 같습니다.다음을 사용하여 만성 코드를 사용할 수 있나요? 철루비?

Chronic의 .NET 포트가 존재합니다.보다 https://github.com/robertwilczynski/nChronic.나는 여기에 몇 가지 개선 사항과 버그 수정을 포함하여 포크를 만들었습니다. https://github.com/dorony/nChronic (풀 요청을 보냈지만 작성자는 아직 응답하지 않았습니다).

@Blair Conrad-좋은 아이디어입니다!IronRuby에서 Chronic을 실행하려고 했지만 종속성 문제가 있었습니다. 아직 준비가 되었는지 모르겠습니다.

다음에서 프로젝트를 찾았습니다. 코드플렉스 (DateTimeEnglishParser) 같은 일을 시도하고 있습니다.아직 몇 년이나 시간이 흘렀지만 좋은 시작입니다.나는 프로젝트에 약간의 참여를 했고, 쓰여진 숫자를 더 잘 처리하기 위한 패치에 기여했습니다.

이는 흥미로운 문제이고 정규식을 더 잘 이해하는 데 확실히 도움이 되었기 때문에 계속해서 작업할 것 같습니다.

있었다 비슷한 스레드 이전에 원하는 작업을 수행하는 것으로 보이는 CodeProject의 라이브러리에 대한 링크를 제공했습니다. http://www.codeproject.com/KB/edit/dateparser.aspx 하지만 불행하게도 라이브러리는 MFC로 작성된 것 같으므로 라이브러리에서 DLL을 만든 다음 .NET 프로그램에서 호출해야 합니다.

Palmsey, 최근에 동일한 요구 사항이 있어서 간단한 파서를 작성했습니다.가장 좋은 코드는 아니지만 다음과 같은 작업을 처리합니다.

"오늘 오후 2시" "화요일 화요일 오후 2시 - 2010 년 7 월 15 일 오전 2시

다른 사람이 유용하다고 생각할 수도 있으므로 codeplex에 보관하십시오.확인 해봐: http://timestamper.codeplex.com/

나는 여러 프레임워크와 Python의 구문 분석 날짜시간 가장 잘 일했습니다.IronPython을 사용하여 .NET에서 사용할 수 있습니다.

전체 샘플 프로젝트에 관심이 있는 사람이 있으면 답변에 대해 의견을 남겨주시면 샘플 프로젝트를 만들어 보겠습니다.

편집하다

요청에 따라 라이브러리와 함께 사용할 수 있는 간단한 프로젝트는 다음과 같습니다.

http://www.assembla.com/code/relativedateparser/subversion/nodes

예를 들어 다음 사용 사례를 시도해 보세요.

  • 2008년 8월 25일
  • 2008년 8월 25일
  • 8월 25일 오후 5시
  • 8월 25일 오후 5시
  • 다음 토요일
  • 내일
  • 다음주 목요일 오후 4시
  • 오후 4시에
  • 에오드
  • 내일은
  • 화요일
  • 어이
  • 5분 안에
  • 지금부터 5분
  • 지금으로부터 5시간 전
  • 정오 2시간 전
  • 내일부터 2일

나는 그 중 하나를 알지 못하지만 멋진 문제처럼 들렸으므로 여기에 내 문제가 있습니다(VB.NET).

Private Function ConvertDateTimeToStringRelativeToNow(ByVal d As DateTime) As String
    Dim diff As TimeSpan = DateTime.Now().Subtract(d)
    If diff.Duration.TotalMinutes < 1 Then Return "Now"

    Dim str As String
    If diff.Duration.TotalDays > 365 Then
        str = CInt(diff.Duration.TotalDays / 365).ToString() & " years"
    ElseIf diff.Duration.TotalDays > 30 Then
        str = CInt(diff.TotalDays / 30).ToString() & " months"
    ElseIf diff.Duration.TotalHours > 24 Then
        str = CInt(diff.Duration.TotalHours / 24) & " days"
    ElseIf diff.Duration.TotalMinutes > 60 Then
        str = CInt(diff.Duration.TotalMinutes / 60) & " minutes"
    Else
        str = CInt(diff.Duration.TotalMinutes).ToString() & " minutes"
    End If
    If str.StartsWith("1") Then str = str.SubString(0, str.Length - 1)
    If diff.TotalDays > 0 Then
        str &= " ago"
    Else
        str &= " from now"
    End If
    Return str
End Function

이미 존재하는 것만큼 정교하지는 않지만 제 생각엔 괜찮게 작동할 것 같습니다.좋은 확장 방법이 될 수 있습니다.

@버튼:나는 그가 다른 의미로 말한 것이라고 생각합니다. 적어도 링크된 페이지의 예에서는 다음과 같습니다.

  Chronic.parse('tomorrow')
    #=> Mon Aug 28 12:00:00 PDT 2006

  Chronic.parse('monday', :context => :past)
    #=> Mon Aug 21 12:00:00 PDT 2006

  Chronic.parse('this tuesday 5:00')
    #=> Tue Aug 29 17:00:00 PDT 2006

저도 깨달을 때까지 한 번 찔러볼까 생각했어요!(좋은 구현이지만)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top