• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Obtain an NSDate object from any casually entered user string
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Obtain an NSDate object from any casually entered user string


  • Subject: Re: Obtain an NSDate object from any casually entered user string
  • From: Charles Srstka <email@hidden>
  • Date: Thu, 15 May 2014 07:53:01 -0500

On May 14, 2014, at 10:38 PM, Gerriet M. Denkmann <email@hidden> wrote:

>
> On 15 May 2014, at 02:00, Ken Thomases <email@hidden> wrote:
>
>>
>> On May 14, 2014, at 8:41 AM, Jonathan Mitchell wrote:
>>
>>> Is there a way to obtain an NSDate object from a casually entered user string, say: 1 1 2015 or 25 jul 15?
>>>
>>> I have looked at the various NSDateFormatter and NSDate API and cannot spot what I am after.
>>
>> You might try NSDataDetector with type NSTextCheckingTypeDate.
>
> I did just that, and are a bit puzzled.
>
> 1. NSDataDetector recognises all date formats I encountered, which is rather good.
>
>
> 2. NSDataDetector ignores fractions of a second:
> e.g. "2014-05-14 11:33:53.126" gets converted to: "2014-05-14 11:33:53  +0700", which in my case is not really a problem.
>
>
> 3. But sometimes the date of NSDataDetector is 12h ahead (again ignoring fractions of a second):
>
> "2014-05-15 07:52:18.658" →  "2014-05-15 19:52:18  +0700"
> "2014-05-14 05:59:46.490 +0700" → "2014-05-14 17:59:46.490 +0700"
>
> But not always - these work ok:
> "2014-05-15 08:22:48.135"
> "2014-05-15 09:15:35 +0700"
> Also, all times after about 13:00 are correct.
>
> This arbitrary advancement of 12h is obviously NOT acceptable.
> What am I doing wrong?

That's the trouble with accepting arbitrary user input. If a user enters a time of "1:23", s/he might mean 1:23 AM, 1:23 PM, or 1:23 military time, and there's no real way to determine which is intended without reading the user's mind. So, the system has to guess. Sometimes it may not guess correctly.

If the user specifically enters "1:23 AM" to remove the ambiguity, this should solve the issue.

Charles


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: Obtain an NSDate object from any casually entered user string
      • From: Sean McBride <email@hidden>
    • Re: Obtain an NSDate object from any casually entered user string
      • From: "Gerriet M. Denkmann" <email@hidden>
References: 
 >Re: Obtain an NSDate object from any casually entered user string (From: "Gerriet M. Denkmann" <email@hidden>)

  • Prev by Date: Re: How to speak Chinese on 10.9.2
  • Next by Date: Re: How to speak Chinese on 10.9.2
  • Previous by thread: Re: Obtain an NSDate object from any casually entered user string
  • Next by thread: Re: Obtain an NSDate object from any casually entered user string
  • Index(es):
    • Date
    • Thread