• 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: Changing current date format
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Changing current date format


  • Subject: Re: Changing current date format
  • From: Shane Stanley <email@hidden>
  • Date: Tue, 21 Jan 2014 11:36:02 +1100

On 21 Jan 2014, at 10:25 am, Deivy Petrescu <email@hidden> wrote:

I am getting very upset with you Shane!
You are making it very compelling for us all to go into ASOC.

What is your goal??? 
Progress???

Perish the thought. But for completeness, here are some similar handlers for numbers. One of the pains of AppleScript is the way it reverts to scientific notation with sizeable numbers, so here's a simple handler to avoid that:

use framework "Foundation"

on formatNumber:theNumber
set theFormatter to current application's NSNumberFormatter's new()
theFormatter's setNumberStyle:(current application's NSNumberFormatterDecimalStyle)
set theResult to theFormatter's stringFromNumber:theNumber
return theResult as text
end formatNumber:

Called by:

use theLib : script "<lib name>" 

set theNumber to 1.234567890123E+12
set theResult to theLib's formatNumber:theNumber
--> "1,234,567,890,123"

You can also use format strings similar to dates, and again you might want them localized or not. Rather than naming a locale, it's probably easier to use a boolean flag:

on formatNumber:theNumber usingFormat:formatString localized:localizeFlag
set theFormatter to current application's NSNumberFormatter's new()
theFormatter's setFormat:formatString
theFormatter's setLocalizesFormat:localizeFlag
set theResult to theFormatter's stringFromNumber:theNumber
return theResult as text
end formatNumber:usingFormat:localized:

on formatNumber:theNumber usingFormat:formatString
return my formatNumber:theNumber usingFormat:formatString localized:true
end formatNumber:usingFormat:

So this will return the same result regardless of locale:

theLib's formatNumber:1.2345678E+4 usingFormat:"#,###.00;0.00;(#,##0.00)" localized:false
--> "12,345.68"

And leaving off the localized: parameter (or setting it to true) will use your Mac's locale to decide what to use as thousands and decimal separators.

Finally, you may sometimes need numbers spelled out:

on textFromNumber:theNumber
set theFormatter to current application's NSNumberFormatter's new()
theFormatter's setNumberStyle:(current application's NSNumberFormatterSpellOutStyle)
set theResult to theFormatter's stringFromNumber:theNumber
return theResult as text
end textFromNumber:

Called like:

theLib's textFromNumber:1.2345678E+4
--> "twelve thousand three hundred forty-five point six seven eight"

Two tips:

* It's a good idea to keep lots of this sort of general stuff in a single library, adding as you go. Then you only need a single "use" statement, and you don't have to try remembering lib names (I use "General lib".)

* The "use framework..." statement(s) only need to appear once in a library, preferably at the start.

-- 
Shane Stanley <email@hidden>
<www.macosxautomation.com/applescript/apps/>

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
AppleScript-Users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
Archives: http://lists.apple.com/archives/applescript-users

This email sent to email@hidden

  • Follow-Ups:
    • Re: Changing current date format
      • From: Christopher Stone <email@hidden>
References: 
 >Changing current date format (From: JF <email@hidden>)
 >Re: Changing current date format (From: Luther Fuller <email@hidden>)
 >Re: Changing current date format (From: Christopher Stone <email@hidden>)
 >Re: Changing current date format (From: Emmanuel LEVY <email@hidden>)
 >Re: Changing current date format (From: Shane Stanley <email@hidden>)
 >Re: Changing current date format (From: "koenig.yvan" <email@hidden>)
 >Re: Changing current date format (From: Shane Stanley <email@hidden>)
 >Re: Changing current date format (From: Emmanuel LEVY <email@hidden>)
 >Re: Changing current date format (From: Christopher Stone <email@hidden>)
 >Re: Changing current date format (From: Shane Stanley <email@hidden>)
 >Re: Changing current date format (From: Deivy Petrescu <email@hidden>)

  • Prev by Date: Re: Changing current date format
  • Next by Date: Re: Changing current date format
  • Previous by thread: Re: Changing current date format
  • Next by thread: Re: Changing current date format
  • Index(es):
    • Date
    • Thread