Date format: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Reverted edits by Short Circuit (Talk); changed back to last version by IanOsgood)
Line 3: Line 3:


=={{header|Ada}}==
=={{header|Ada}}==

{{example-needs-review}}
with Ada.Calendar; use Ada.Calendar;
with Ada.Calendar; use Ada.Calendar;
with Ada.Calendar.Arithmetic; use Ada.Calendar.Arithmetic;
with Ada.Calendar.Arithmetic; use Ada.Calendar.Arithmetic;
Line 38: Line 38:


=={{header|D}}==
=={{header|D}}==
{{example-needs-review}}
'''Compiler:''' [[D]] - DMD 1.026
'''Compiler:''' [[D]] - DMD 1.026


Line 65: Line 64:


=={{header|Forth}}==
=={{header|Forth}}==

: str-table
: str-table
create ( n -- ) 0 do , loop
create ( n -- ) 0 do , loop
Line 94: Line 94:


=={{header|Perl}}==
=={{header|Perl}}==

{{example-needs-review}}
use POSIX;
use POSIX;
print POSIX::strftime('%Y-%m-%d', localtime), "\n";
print POSIX::strftime('%Y-%m-%d', localtime), "\n";
Line 110: Line 110:


=={{header|Raven}}==
=={{header|Raven}}==
{{example-needs-review}}
time int as today
time int as today



Revision as of 21:59, 10 February 2008

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 a given date in the formats of "2007-11-10" and "Sunday, November 10, 2007".

Ada

with Ada.Calendar; use Ada.Calendar;
with Ada.Calendar.Arithmetic; use Ada.Calendar.Arithmetic;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Text_Io; use Ada.Text_IO;

procedure Date_Format is
   type Month_Names is array(Month_Number) of Unbounded_String;
   Months : constant Month_Names := (
      To_Unbounded_String("January"),
      To_Unbounded_String("February"),
      To_Unbounded_String("March"),
      To_Unbounded_String("April"),
      To_Unbounded_String("May"),
      To_Unbounded_String("June"),
      To_Unbounded_String("July"),
      To_Unbounded_String("August"),
      To_Unbounded_String("September"),
      To_Unbounded_String("October"),
      To_Unbounded_String("November"),
      To_Unbounded_String("December"));
   The_Day : Time;
   Increment : constant Day_Count := 1;
begin
   The_Day := Clock;
   Put_Line("Today is: " & To_String(Months(Month(The_Day))) &
      Day_Number'Image(Day(The_Day)) & "," &
      Year_Number'Image(Year(The_Day)));
   The_Day := The_Day + Increment;
   Put_Line("Tomorrow is: " & To_String(Months(Month(The_Day))) &
      Day_Number'Image(Day(The_Day)) & "," &
      Year_Number'Image(Year(The_Day)));
end Date_Format;

D

Compiler: D - DMD 1.026

Library: Tango
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 ;
}

Sample Output:

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

Forth

: 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

: .long-date
  time&date ( s m h D M Y )
  >R 1- months type space 1 .r [char] , emit space R> .
  drop drop drop ;
: .-0 ( n -- n )
  [char] - emit
  dup 10 < if [char] 0 emit then ;
: .short-date
  time&date  1 .r .-0 1 .r .-0 1 .r  drop drop drop ;

Perl

use POSIX;
print POSIX::strftime('%Y-%m-%d', localtime), "\n";
print POSIX::strftime('%A, %B %d, %Y', localtime), "\n";

Python

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

import datetime
today = datetime.date.today()
# This one is built in:
print today.isoformat()
# Or use a format string for full flexibility:
print today.strftime('%A, %B %d, %Y')

Raven

time int as today

Short form:

today '%Y-%m-%d' date

Long form:

today '%A, %B %d, %Y' date