Date format: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Put in text proc cat, syntax highlighting)
Line 1: Line 1:
{{task}}{{Clarified-review}}
{{task|Text processing}}{{Clarified-review}}
Display the current date in the formats of "2007-11-10" and "Sunday, November 10, 2007".
Display the current date in the formats of "2007-11-10" and "Sunday, November 10, 2007".


Line 93: Line 93:
{{works with|D|DMD 1.026}}
{{works with|D|DMD 1.026}}
{{libheader|Tango}}
{{libheader|Tango}}
<pre>module datetimedemo ;
<d>module datetimedemo ;


import tango.time.Time ;
import tango.time.Time ;
Line 109: Line 109:
d = g.toTime(2008, 2, 1, 0, 0, 0, 0, g.AD_ERA) ;
d = g.toTime(2008, 2, 1, 0, 0, 0, 0, g.AD_ERA) ;
Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;
Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;
}</pre>
}</d>
Sample Output:
Sample Output:
<pre>2007-11-10
<pre>2007-11-10
Line 185: Line 185:


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

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

//words way
//words way
System.out.print(symbols.getWeekdays()[now.get(Calendar.DAY_OF_WEEK)] + ", ");
System.out.print(symbols.getWeekdays()[now.get(Calendar.DAY_OF_WEEK)] + ", ");
System.out.print(symbols.getMonths()[now.get(Calendar.MONTH)] + " ");
System.out.print(symbols.getMonths()[now.get(Calendar.MONTH)] + " ");
System.out.println(now.get(Calendar.DATE) + ", " + now.get(Calendar.YEAR));
System.out.println(now.get(Calendar.DATE) + ", " + now.get(Calendar.YEAR));
//using DateFormat
//using DateFormat
Date date = new Date();
Date date = new Date();
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(format1.format(date));
System.out.println(format1.format(date));
DateFormat format2 = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
DateFormat format2 = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
System.out.println(format2.format(date));
System.out.println(format2.format(date));
}
}
}</java>
}


=={{header|OCaml}}==
=={{header|OCaml}}==
Line 245: Line 245:
=={{header|Perl}}==
=={{header|Perl}}==
{{libheader|POSIX}}
{{libheader|POSIX}}
use POSIX;
<perl>use POSIX;

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


Output with locales '''C''':
Output with locales '''C''':
Line 259: Line 259:


Actual date:
Actual date:
use POSIX;
<perl>use POSIX;

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


Output with locales '''C''':
Output with locales '''C''':
Line 270: Line 270:
=={{header|PHP}}==
=={{header|PHP}}==
Formatting rules: http://www.php.net/date
Formatting rules: http://www.php.net/date
<?php
<php><?php
echo date('Y-m-d', time())."\n";
echo date('Y-m-d', time())."\n";
echo date('l, F j, Y', time())."\n";
echo date('l, F j, Y', time())."\n";
?>
?></php>


=={{header|Python}}==
=={{header|Python}}==
Formatting rules: http://docs.python.org/lib/module-time.html (strftime)
Formatting rules: http://docs.python.org/lib/module-time.html (strftime)


import datetime
<python>import datetime
today = datetime.date.today()
today = datetime.date.today()
# This one is built in:
# This one is built in:
print today.isoformat()
print today.isoformat()
# Or use a format string for full flexibility:
# Or use a format string for full flexibility:
print today.strftime('%Y-%m-%d')
print today.strftime('%Y-%m-%d')</python>


=={{header|Raven}}==
=={{header|Raven}}==

Revision as of 14:20, 17 November 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 the current date in the formats of "2007-11-10" and "Sunday, November 10, 2007".

Ada

<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; </Ada> Sample output:

2008-10-03
Friday, October 3, 2008

C

<C>

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>

int main() {

  time_t seconds;
  struct tm *now;
  seconds = time(NULL);
  now = localtime(&seconds);
  printf("%d-%d-%d\n", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday);
  char *months[] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
  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);
  /* shortcut for default format */
  printf("%s", ctime(&seconds));
  return 0;

} </C> Sample output:

2008-10-7
Tuesday, October 7, 2008
Tue Oct  7 16:51:40 2008

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.
<cfset date = createDate( 2007, 11, 10 ) />
#dateFormat( date, "YYYY-MM-DD" )#, #dateFormat( date, "DDDD, MMMM DD, YYYY" )#

D

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.
Works with: D version DMD 1.026
Library: Tango

<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 ;

}</d> 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 ;

Haskell

import System.Locale
import System.Time

format1 :: CalendarTime -> String
format1 = formatCalendarTime defaultTimeLocale "%Y-%m-%e"

format2 :: CalendarTime -> String
format2 = formatCalendarTime defaultTimeLocale "%A, %B %d, %Y"

main = do
    t <- getClockTime >>= toCalendarTime
    mapM_ putStrLn [format1 t, format2 t]

J

dayNm  =: ;:'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'
monthNm=: ;:'0 January February March April May June July August September October November December'

dateFormat=: 3 : 0
 0 dateFormat y  NB. default to short format
:
 'year month date'=. 3{. y
 select. x
  case. 0 do.    NB. short format YYYY-MM-DD, e.g. '1900-02-28'
   dashNN=. (('-0' {.~ (3-#)) ,])@ ":
   (":year),(dashNN month),(dashNN date)

  case. 1 do.    NB. verbose format, e.g. 'Wednesday, February 28, 1900'
   Y=. year - A =. <. 12%~ 14-month
   M=. <.12%~31*(month+12*A)-2
   D=. 7| date+M+Y+(<.Y%4)+(<.Y%400)-(<.Y%100)
   (>D{dayNm), ', ',(>month{monthNm),' ',(":date), ', ', ":year
 end.
)

Example:

   (dateFormat ,: 1& dateFormat) 1920 12 17
1920-12-17               
Friday, December 17, 1920

Java

<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)); } }</java>

OCaml

<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"</ocaml>


<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"</ocaml>

Perl

Library: POSIX

<perl>use POSIX;

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

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: <perl>use POSIX;

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

Output with locales C:

2008-02-13
Wednesday, February 13, 2008

PHP

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

Python

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

<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')</python>

Raven

time int as today

Short form:

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

Long form:

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

UNIX Shell

Works with: bash
Works with: tcsh
date +"%Y-%m-%d"
date +"%A, %B %d, %Y"