Date format: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
Line 638: Line 638:
"{0:dddd, MMMM d, yyyy}" -f (Get-Date)</lang>
"{0:dddd, MMMM d, yyyy}" -f (Get-Date)</lang>
''Note:'' The names of months and days follow the currently set locale but otherwise the format is unchanged.
''Note:'' The names of months and days follow the currently set locale but otherwise the format is unchanged.

=={{header|PureBasic}}==
{{works with|PureBasic|4.41}}
<lang PureBasic>Define d$, m$

Select DayOfWeek(Date())
Case 1: d$="Monday"
Case 2: d$="Tuesday"
Case 3: d$="Wednesday"
Case 4: d$="Thursday"
Case 5: d$="Friday"
Case 6: d$="Saturday"
Default: d$="Sunday"
EndSelect

Select Month(Date())
Case 1: m$="January";
Case 2: m$="February";
Case 3: m$="March";
Case 4: m$="April";
Case 5: m$="May";
Case 6: m$="June";
Case 7: m$="July";
Case 8: m$="August";
Case 9: m$="September";
Case 10:m$="October";
Case 11:m$="November"
Default:m$="December";
EndSelect

Debug FormatDate("%yyyy-%mm-%dd", Date())
Debug d$+", "+m$+FormatDate(" %dd, %yyyy", Date()) </lang>


=={{header|Python}}==
=={{header|Python}}==

Revision as of 10:27, 27 February 2010

Task
Date format
You are encouraged to solve this task according to the task description, using any language you may know.
This task has been clarified. Its programming examples are in need of review to ensure that they still fit the requirements of the task.

Display the current date in the formats of "2007-11-10" and "Sunday, November 10, 2007".

Ada

<lang ada>with Ada.Calendar; use Ada.Calendar; with Ada.Calendar.Formatting; use Ada.Calendar.Formatting; with Ada.Text_IO; use Ada.Text_IO;

procedure Date_Format is

  function Image (Month : Month_Number) return String is
  begin
     case Month is
        when 1  => return "January";
        when 2  => return "February";
        when 3  => return "March";
        when 4  => return "April";
        when 5  => return "May";
        when 6  => return "June";
        when 7  => return "July";
        when 8  => return "August";
        when 9  => return "September";
        when 10 => return "October";
        when 11 => return "November";
        when 12 => return "December";
     end case;
  end Image;
  function Image (Day : Day_Name) return String is
  begin
     case Day is
        when Monday    => return "Monday";
        when Tuesday   => return "Tuesday";
        when Wednesday => return "Wednesday";
        when Thursday  => return "Thursday";
        when Friday    => return "Friday";
        when Saturday  => return "Saturday";
        when Sunday    => return "Sunday";
     end case;
  end Image;
  Today : Time := Clock;

begin

  Put_Line (Image (Today) (1..10));
  Put_Line
  (  Image (Day_Of_Week (Today)) & ", "
  &  Image (Ada.Calendar.Month (Today))
  &  Day_Number'Image (Ada.Calendar.Day (Today)) & ","
  &  Year_Number'Image (Ada.Calendar.Year (Today))
  );

end Date_Format;</lang> Sample output:

2008-10-03
Friday, October 3, 2008

ALGOL 68

Works with: ALGOL 68 version Standard - using the a68g standard library
Works with: ALGOL 68G version Any - tested with release mk15-0.8b.fc9.i386

Note: the format can be used for both printing and reading date data.

<lang algol68># define the layout of the date/time as provided by the call to local time # STRUCT ( INT sec, min, hour, mday, mon, year, wday, yday, isdst) tm = (6,5,4,3,2,1,7,~,8);

FORMAT # some useful format declarations #

 ymd repr = $4d,"-"2d,"-"2d$,
 month repr =    $c("January","February","March","April","May","June","July",
                    "August","September","October","November","December")$,
 week day repr = $c("Sunday","Monday","Tuesday","Wednesday",
                    "Thursday","Friday","Saturday")$,
 dmdy repr =     $f(week day repr)", "f(month repr)" "g(-0)", "g(-4)$,
 mon  = $c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")$,
 wday = $c("Sun","Mon","Tue","Wed","Thu","Fri","Sat")$,
 tz   = $c("MSK","MSD")$,
 unix time repr = $f(wday)" "f(mon)z-d," "dd,":"dd,":"dd," "f(tz)" "dddd$;

[]INT now = local time;

printf((ymd repr, now[year OF tm:mday OF tm], $l$)); printf((dmdy repr, now[wday OF tm], now[mon OF tm], now[mday OF tm], now[year OF tm], $l$));

printf((unix time repr, now[wday OF tm], now[mon OF tm], now[mday OF tm],

                       now[hour OF tm:sec OF tm], now[isdst OF tm]+1, now[year OF tm], $l$))</lang>

Sample output:

2009-04-08
Wednesday, April 8, 2009
Wed Apr  8 18:04:02 MSD 2009

AutoHotkey

<lang autohotkey>FormatTime, Date1, 20071110235959, yyyy-MM-dd ; "2007-11-10" FormatTime, Date2, 20071110235959, LongDate  ; "Sunday, November 10, 2007" MsgBox %Date1% `n %Date2%</lang>

AWK

<lang awk>$ awk 'BEGIN{t=systime();print strftime("%Y-%m-%d",t)"\n"strftime("%A, %B %d, %Y",t)}' 2009-05-15 Friday, May 15, 2009</lang>

BASIC

Works with: FreeBASIC

<lang freebasic>#include "vbcompat.bi"

DIM today As Double = Now()

PRINT Format(today, "yyyy-mm-dd") PRINT Format(today, "dddd, mmmm d, yyyy")</lang>

C

<lang c>#include <stdio.h>

  1. include <time.h>
  1. define MAX_BUF 50

int main() {

  time_t seconds;
  struct tm *now;
  char buf[MAX_BUF];
  seconds = time(NULL);
  now = localtime(&seconds);
  printf("%d-%d-%d\n", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday);
  const char *months[] = {"January", "February", "March", "April", "May", "June",
                          "July", "August", "September", "October", "November", "December"};
  const char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
                        "Thursday","Friday","Saturday"};
  printf("%s, %s %d, %d\n",days[now->tm_wday],
                           months[now->tm_mon],
                           now->tm_mday, now->tm_year + 1900);
  /* using the strftime (the result depends on the locale) */
  strftime(buf, MAX_BUF, "%A, %B %e, %Y", now);
  printf("%s\n", buf);

   return 0;

}</lang> Sample output:

2009-5-13
Wednesday, May 13, 2009
Wednesday, May 13, 2009

C++

<lang cpp>// Display the current date in the formats of "2007-11-10" // and "Sunday, November 10, 2007".

  1. include <vector>
  2. include <string>
  3. include <iostream>
  4. include <ctime>

/** Return the current date in a string, formatted as either ISO-8601

*  or "Weekday-name, Month-name Day, Year".
*
*  The date is initialized when the object is created and will return
*  the same date for the lifetime of the object.  The date returned
*  is the date in the local timezone.
*/

class Date {

   const size_t size;
   std::vector<char> out;
   struct tm ltime;

public:

   /// Default constructor.
   Date() : size(200), out(size), ltime()
   {
       time_t t = time(0);
       localtime_r(&t, &ltime);
   }
   
   /** Return the date based on a format string.  The format string is
    *  fed directly into strftime().  See the strftime() documentation
    *  for information on the proper construction of format strings.
    *
    *  @param[in] fmt is a valid strftime() format string.
    *
    *  @return a string containing the formatted date, or a blank string
    *      if the format string was invalid or resulted in a string that
    *      exceeded the internal buffer length.
    */
   std::string getDate(const char* fmt)
   {
       const size_t result = strftime(&(out[0]), size, fmt, &ltime);
       return std::string(out.begin(), out.begin() + result);
   }
   
   /** Return the date in ISO-8601 date format.
    *
    *  @return a string containing the date in ISO-8601 date format.
    */
   std::string getISODate() {return getDate("%F");}
   
   /** Return the date formatted as "Weekday-name, Month-name Day, Year".
    *
    *  @return a string containing the date in the specified format.
    */
   std::string getTextDate() {return getDate("%A, %B %d, %Y");}

};

int main() {

   Date d;
   std::cout << d.getISODate() << std::endl;
   std::cout << d.getTextDate() << std::endl;
   return 0;

}</lang> Sample output:

2009-05-14
Thursday, May 14, 2009

C#

<lang csharp>using System;

namespace RosettaCode.DateFormat {

   class Program
   {
       static void Main(string[] args)
       {
           DateTime today = DateTime.Now.Date;
           Console.WriteLine(today.ToString("yyyy-MM-dd"));
           Console.WriteLine(today.ToString("dddd, MMMMM d, yyyy"));
       }
   }

}</lang>

Clojure

<lang lisp>(let [now (.getTime (java.util.Calendar/getInstance))

     f1  (java.text.SimpleDateFormat. "yyyy-MM-dd")
     f2  (java.text.SimpleDateFormat. "EEEE, MMMM dd, yyyy")]
 (println (.format f1 now))
 (println (.format f2 now)))</lang>

Sample output:

2009-12-06
Sunday, December 06, 2009

ColdFusion

This example may be incorrect due to a recent change in the task requirements or a lack of testing. Please verify it and remove this message. If the example does not match the requirements or does not work, replace this message with Template:incorrect or fix the code yourself.

<lang coldfusion>#dateFormat(Now(), "YYYY-MM-DD" )#

  1. dateFormat(Now(), "DDDD, MMMM DD, YYYY" )#</lang>

Common Lisp

<lang lisp>(defconstant *day-names*

   #("Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"))

(defconstant *month-names*

   #(nil "January" "February" "March" "April" "May" "June" "July"
     "August" "September" "October" "November" "December"))

(multiple-value-bind (sec min hour date month year day daylight-p zone) (get-decoded-time)

   (format t "~4d-~2,'0d-~2,'0d~%" year month date)
   (format t "~a, ~a ~d, ~4d~%" 
       (aref *day-names* day) (aref *month-names* month) date year))</lang>

D

Works with: D version DMD 1.026
Library: Tango

<lang d>module datetimedemo ;

import tango.time.Time ; import tango.text.locale.Locale ; import tango.time.chrono.Gregorian ;

import tango.io.Stdout ;

void main() {

   Gregorian g = new Gregorian ;
   Stdout.layout = new Locale; // enable Stdout to handle date/time format
   Time d = g.toTime(2007, 11, 10, 0, 0, 0, 0, g.AD_ERA) ;
   Stdout.format("{:yyy-MM-dd}", d).newline ;
   Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;
   d = g.toTime(2008, 2, 1, 0, 0, 0, 0, g.AD_ERA) ;
   Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;

}</lang> Sample Output:

2007-11-10
Saturday, November 10, 2007
Friday, February 1, 2008

Factor

<lang factor>USING: formatting calendar io ;

now "%Y-%m-%d" strftime print now "%A, %B %d, %Y" strftime print</lang>

Forth

<lang forth>: .-0 ( n -- n )

 [char] - emit
 dup 10 < if [char] 0 emit then ;
.short-date
 time&date ( s m h D M Y )
 1 u.r .-0 1 u.r .-0 1 u.r 
 drop drop drop ;
str-table
 create ( n -- ) 0 do , loop
 does>  ( n -- str len ) swap cells + @ count ;
here ," December"
here ," November"
here ," October"
here ," September"
here ," August"
here ," July"
here ," June"
here ," May"
here ," April"
here ," March"
here ," February"
here ," January"

12 str-table months

here ," Sunday"
here ," Saturday"
here ," Friday"
here ," Thursday"
here ," Wednesday"
here ," Tuesday"
here ," Monday"

7 str-table weekdays

\ Zeller's Congruence

zeller ( m -- days since March 1 )
 9 + 12 mod 1-   26 10 */ 3 + ;
weekday ( d m y -- 0..6 ) \ Monday..Sunday
 over 3 < if 1- then
 dup    4 /
 over 100 / -
 over 400 / +  +
 swap zeller + +
 1+ 7 mod ;
3dup dup 2over rot ;
.long-date
 time&date ( s m h D M Y )
 3dup weekday weekdays type ." , "
 >R 1- months type space 1 u.r ." , " R> .
 drop drop drop ;</lang>

Fortran

Works with: Fortran version 95 and later

The subroutine DATE_AND_TIME does not return day of week information so we have to write our own function for that <lang fortran>PROGRAM DATE

 IMPLICIT NONE
 
 INTEGER :: dateinfo(8), day
 CHARACTER(9) :: month, dayname
    
 CALL DATE_AND_TIME(VALUES=dateinfo)
 SELECT CASE(dateinfo(2))
   CASE(1)
     month = "January"
   CASE(2)
     month = "February"
   CASE(3)
     month = "March"
   CASE(4)
     month = "April"
   CASE(5)
     month = "May"
   CASE(6)
     month = "June"
   CASE(7)
     month = "July"
   CASE(8)
     month = "August"
   CASE(9)
     month = "September"
   CASE(10)
     month = "October"
   CASE(11)
     month = "November"
   CASE(12)
    month = "December"
 END SELECT
 day = Day_of_week(dateinfo(3), dateinfo(2), dateinfo(1))
 SELECT CASE(day)
   CASE(0)
     dayname = "Saturday"
   CASE(1)
     dayname = "Sunday"
   CASE(2)
     dayname = "Monday"
   CASE(3)
     dayname = "Tuesday"
   CASE(4)
     dayname = "Wednesday"
   CASE(5)
     dayname = "Thursday"
   CASE(6)
     dayname = "Friday"
 END SELECT
 
 WRITE(*,"(I0,A,I0,A,I0)") dateinfo(1),"-", dateinfo(2),"-", dateinfo(3)
 WRITE(*,"(4(A),I0,A,I0)") trim(dayname), ", ", trim(month), " ", dateinfo(3), ", ", dateinfo(1)

CONTAINS

 FUNCTION Day_of_week(d, m, y)
   INTEGER :: Day_of_week, j, k
   INTEGER, INTENT(IN) :: d, m, y
   
   j = y / 100
   k = MOD(y, 100)
   Day_of_week = MOD(d + (m+1)*26/10 + k + k/4 + j/4 + 5*j, 7)
 END FUNCTION Day_of_week

END PROGRAM DATE</lang> Output

2008-12-14
Sunday, December 14, 2008

Groovy

Solution: <lang groovy>def isoFormat = { date -> date.format("yyyy-MM-dd") } def longFormat = { date -> date.format("EEEE, MMMM dd, yyyy") }</lang>

Test Program: <lang groovy>def now = new Date() println isoFormat(now) println longFormat(now)</lang>

Haskell

<lang haskell>import Control.Monad import Data.Time import System.Locale

format1 :: FormatTime t => t -> String format1 = formatTime defaultTimeLocale "%Y-%m-%e"

format2 :: FormatTime t => t -> String format2 = formatTime defaultTimeLocale "%A, %B %d, %Y"

main = do

   t <- liftM2 utcToLocalTime getCurrentTimeZone getCurrentTime
   mapM_ putStrLn [format1 t, format2 t]</lang>

J

Short format using built in formatting: <lang j> 6!:0 'YYYY-MM-DD' 2009-08-27</lang>

Verb to show custom format: <lang j>require 'dates' fmtDate=: verb define

 'y m d'=. 3{. y
 mth=. ;;:'January February March April May June July August September October November December'
 days=. ;:'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'
 day=. weekday y,m,d
 (day{::days),', ',(m{::mth) ,' ',(":d), ', ', ": y

)

  fmtDate 6!:0 $0

Thursday, August 27, 2009</lang>

Java

<lang java>import java.util.Calendar;

import java.util.GregorianCalendar; import java.text.DateFormatSymbols; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; public class Dates{ public static void main(String[] args){ Calendar now = new GregorianCalendar(); //months are 0 indexed, dates are 1 indexed DateFormatSymbols symbols = new DateFormatSymbols(); //names for our months and weekdays

//plain numbers way System.out.println(now.get(Calendar.YEAR) + "-" + (now.get(Calendar.MONTH) + 1) + "-" + now.get(Calendar.DATE));

//words way System.out.print(symbols.getWeekdays()[now.get(Calendar.DAY_OF_WEEK)] + ", "); System.out.print(symbols.getMonths()[now.get(Calendar.MONTH)] + " "); System.out.println(now.get(Calendar.DATE) + ", " + now.get(Calendar.YEAR));

//using DateFormat Date date = new Date(); DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(format1.format(date)); DateFormat format2 = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); System.out.println(format2.format(date)); }

}</lang>

JavaScript

JavaScript does not have any built-in strftime-type functionality.

<lang javascript>var now = new Date();

var fmt1 = (1900 + now.getYear()).toString() + '-' + (1 + now.getMonth()) + '-' + now.getDate(); print(fmt1);

var weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; var fmt2 = weekdays[now.getDay()] + ', ' + months[now.getMonth()] + ' ' + now.getDate() + ', ' + (1900 + now.getYear());

print(fmt2);</lang>
2010-1-12
Tuesday, January 12, 2010

Objective-C

<lang objc>NSLog(@"%@", [NSDate date]); NSLog(@"%@", [[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d" timeZone:nil locale:nil]); NSLog(@"%@", [[NSDate date] descriptionWithCalendarFormat:@"%A, %B %d, %Y" timeZone:nil locale:nil]);</lang>

OCaml

<lang ocaml># #load "unix.cma";;

  1. open Unix;;
  1. let t = time() ;;

val t : float = 1219997516.

  1. let gmt = gmtime t ;;

val gmt : Unix.tm =

 {tm_sec = 56; tm_min = 11; tm_hour = 8; tm_mday = 29; tm_mon = 7;
  tm_year = 108; tm_wday = 5; tm_yday = 241; tm_isdst = false}
  1. Printf.sprintf "%d-%02d-%02d" (1900 + gmt.tm_year) (1 + gmt.tm_mon) gmt.tm_mday ;;

- : string = "2008-08-29"</lang>


<lang ocaml>let months = [| "January"; "February"; "March"; "April"; "May"; "June";

     "July"; "August"; "September"; "October"; "November"; "December" |] 

let days = [| "Sunday"; "Monday"; "Tuesday"; (* Sunday is 0 *)

     "Wednesday"; "Thursday"; "Friday"; "Saturday" |]
  1. Printf.sprintf "%s, %s %d, %d"
     days.(gmt.tm_wday)
     months.(gmt.tm_mon)
     gmt.tm_mday
     (1900 + gmt.tm_year) ;;

- : string = "Friday, August 29, 2008"</lang>

Oz

Getting the current local date is easy, but we have to do the formatting manually. <lang oz>declare

 WeekDays = unit(0:"Sunday" "Monday" "Tuesday" "Wednesday"
                 "Thursday" "Friday" "Saturday")
 Months = unit(0:"January" "February" "March" "April"
               "May" "June" "July" "August" "September"
               "October" "November" "December")
 fun {DateISO Time}
    Year = 1900 + Time.year
    Month = Time.mon + 1
 in
    Year#"-"#{Align Month}#"-"#{Align Time.mDay}
 end
 fun {DateLong Time}
    Year = 1900 + Time.year
 in
    WeekDays.(Time.wDay)#", "#Months.(Time.mon)#" "#Time.mDay#", "#Year
 end
 fun {Align Num}
    if Num < 10 then "0"#Num else Num end
 end

in

 {System.showInfo {DateISO {OS.localTime}}}
 {System.showInfo {DateLong {OS.localTime}}}</lang>


Perl

Library: POSIX

<lang perl>use POSIX;

print strftime('%Y-%m-%d', 0, 0, 0, 10, 10, 107), "\n"; print strftime('%A, %B %d, %Y', 0, 0, 0, 10, 10, 107), "\n";</lang>

Output with locales C:

2007-11-10
Saturday, November 10, 2007

Output with locales cs_CZ.UTF-8:

2007-11-10
Sobota, listopad 10, 2007

Actual date: <lang perl>use POSIX;

print strftime('%Y-%m-%d', localtime), "\n"; print strftime('%A, %B %d, %Y', localtime), "\n";</lang>

Output with locales C:

2008-02-13
Wednesday, February 13, 2008

PHP

Formatting rules: http://www.php.net/date <lang php><?php echo date('Y-m-d', time())."\n"; echo date('l, F j, Y', time())."\n"; ?></lang>

PicoLisp

<lang PicoLisp>(let (Date (date) Lst (date Date))

  (prinl (dat$ Date "-"))             # 2010-02-19
  (prinl                              # Friday, February 19, 2010
     (day Date)
     ", "
     (get *MonFmt (cadr Lst))
     " "
     (caddr Lst)
     ", "
     (car Lst) ) )</lang>

PL/I

<lang PL/I> declare day_of_week(7) character (9) varying initial

  'Sunday', 'Monday', 'Tuesday', 'Wednesday',
  'Thursday', 'Friday', 'Saturday');

declare today character (8);

today = datetime('YYYYMMDD'); put edit (substr(today, 1, 4), '-', substr(today, 5, 2), '-', substr(today, 7) ) (A);

today = datetime('MmmDDYYYY');

put skip edit (day_of_week(weekday(days())), ', ') (A); put edit (substr(today, 1, 3), ' ', substr(today, 4, 2), ',', substr(today, 6, 4) ) (A); </lang>

PowerShell

<lang powershell>"{0:yyyy-MM-dd}" -f (Get-Date) "{0:dddd, MMMM d, yyyy}" -f (Get-Date)</lang> Note: The names of months and days follow the currently set locale but otherwise the format is unchanged.

PureBasic

Works with: PureBasic version 4.41

<lang PureBasic>Define d$, m$

Select DayOfWeek(Date())

 Case 1: d$="Monday"
 Case 2: d$="Tuesday"
 Case 3: d$="Wednesday"
 Case 4: d$="Thursday"
 Case 5: d$="Friday"
 Case 6: d$="Saturday"
 Default: d$="Sunday"

EndSelect

Select Month(Date())

 Case 1: m$="January";
 Case 2: m$="February";
 Case 3: m$="March";
 Case 4: m$="April";
 Case 5: m$="May";
 Case 6: m$="June";
 Case 7: m$="July";
 Case 8: m$="August";
 Case 9: m$="September";
 Case 10:m$="October";
 Case 11:m$="November"
 Default:m$="December";

EndSelect

Debug FormatDate("%yyyy-%mm-%dd", Date()) Debug d$+", "+m$+FormatDate(" %dd, %yyyy", Date()) </lang>

Python

Formatting rules: http://docs.python.org/lib/module-time.html (strftime)

<lang python>import datetime today = datetime.date.today()

  1. This one is built in:

print today.isoformat()

  1. Or use a format string for full flexibility:

print today.strftime('%Y-%m-%d')</lang>

R

strftime is short for "string format time". <lang R>now <- Sys.time() strftime(now, "%Y-%m-%d") strftime(now, "%A, %B %d, %Y")</lang>

Raven

<lang raven>time int as today</lang>

Short form:

<lang raven>today '%Y-%m-%d' date</lang>

Long form:

<lang raven>today '%A, %B %d, %Y' date</lang>

REBOL

<lang REBOL>REBOL [ Title: "Date Formatting" Author: oofoe Date: 2009-12-06 URL: http://rosettacode.org/wiki/Date_format ]

REBOL has no built-in pictured output.

zeropad: func [pad n][

   n: to-string n
   insert/dup n "0" (pad - length? n)
   n 

] d02: func [n][zeropad 2 n]

print now ; Native formatting.

print rejoin [now/year "-" d02 now/month "-" d02 now/day]

print rejoin [ pick system/locale/days now/weekday ", " pick system/locale/months now/month " " now/day ", " now/year ]</lang>

Output:

6-Dec-2009/10:02:10-5:00
2009-12-06
Sunday, December 6, 2009

REXX

<lang rexx>say date() /* --> 10 Nov 2007 */

say date('s',,,'-')

weekday = date("w") /* --> Sunday */ longfmt = date("l") /* --> 10 November 2007 */

say weekday"," word(longfmt,2) word(longfmt,1)"," word(longfmt,3)</lang> Output:

20 Feb 2010
2010-02-20
Saturday, February 20, 2010

Ruby

Formatting rules: http://www.ruby-doc.org/core/classes/Time.html#M000297 (strftime)

<lang ruby>puts Time.now puts Time.now.strftime('%Y-%m-%d') puts Time.now.strftime('%A, %B %d, %Y')</lang> Output:

Wed Feb 13 14:24:38 -0800 2008
2008-02-13
Wednesday, February 13, 2008

Standard ML

Formatting rules: http://www.standardml.org/Basis/date.html#SIG:DATE.fmt:VAL

<lang sml>print (Date.fmt "%Y-%m-%d" (Date.fromTimeLocal (Time.now ())) ^ "\n"); print (Date.fmt "%A, %B %d, %Y" (Date.fromTimeLocal (Time.now ())) ^ "\n");</lang> Output:

2008-02-13
Wednesday, February 13, 2008

Tcl

<lang tcl>set now [clock seconds] puts [clock format $now -format "%Y-%m-%d"] puts [clock format $now -format "%A, %B %d, %Y"]</lang>


UNIX Shell

<lang bash>date +"%Y-%m-%d" date +"%A, %B %d, %Y"</lang>

Ursala

The method is to transform a date in standard format returned by the library function, now. <lang Ursala>#import std

  1. import cli

months = ~&p/block3'JanFebMarAprMayJunJulAugSepOctNovDec' block2'010203040506070809101112'

completion =

-:~& ~&pllrTXS/block3'SunMonTueWedThuFriSat'--(~&lS months) -- (

  --','* sep`, 'day,day,sday,nesday,rsday,day,urday',
  sep`, 'uary,ruary,ch,il,,e,y,ust,tember,ober,ember,ember')

text_form = sep` ; mat` + completion*+ <.~&hy,~&tth,--','@th,~&ttth> numeric_form = sep` ; mat`-+ <.~&ttth,@tth -: months,~&th>

  1. show+

main = <.text_form,numeric_form> now0</lang> output:

Wednesday, June 24, 2009
2009-06-24


Vedit macro language

Display current date in format "2007-11-10":

<lang vedit>Date(REVERSE+NOMSG+VALUE, '-')</lang>

Display current date in format "Sunday, November 10, 2007": <lang vedit>// Get todays date into #1, #2 and #3 Buf_Switch(Buf_Free) Out_Ins() Date(BEGIN+NOMSG) Out_Ins(CLEAR) BOF

  1. 1 = Num_Eval(SUPPRESS+ADVANCE) // #1 = day

Char

  1. 2 = Num_Eval(SUPPRESS+ADVANCE) // #2 = month

Char

  1. 3 = Num_Eval(SUPPRESS) // #3 = year

Buf_Quit(OK)

  1. 7 = JDate() % 7 // #7 = weekday

// Convert weekday number (in #7) into word in T-reg 1 if (#7==0) { RS(1,"Sunday") } if (#7==1) { RS(1,"Monday") } if (#7==2) { RS(1,"Tuesday") } if (#7==3) { RS(1,"Wednesday") } if (#7==4) { RS(1,"Thursday") } if (#7==5) { RS(1,"Friday") } if (#7==6) { RS(1,"Saturday") }

// Convert month number (in #2) into word in T-reg 2 if (#2==1) { RS(2,"January") } if (#2==2) { RS(2,"February") } if (#2==3) { RS(2,"March") } if (#2==4) { RS(2,"April") } if (#2==5) { RS(2,"May") } if (#2==6) { RS(2,"June") } if (#2==7) { RS(2,"July") } if (#2==8) { RS(2,"August") } if (#2==9) { RS(2,"September") } if (#2==10) { RS(2,"October") } if (#2==11) { RS(2,"November") } if (#2==12) { RS(2,"December") }

// Display the date string RT(1) M(", ") RT(2) M(" ") NT(#1, LEFT+NOCR) M(",") NT(#3)</lang>

To insert the date string into edit buffer instead of displaying it, replace the last line with this:

<lang vedit>RI(1) IT(", ") RI(2) IT(" ") NI(#1, LEFT+NOCR) IT(",") NI(#3)</lang>