Justin Mui

Justin Mui

Dates and Times

Slide Duration:

Table of Contents

Section 1: Introduction to Ruby
Setting Up Your Environment

22m 8s

Intro
0:00
Installing Ruby
0:06
Ruby-lan.org
0:07
Three Ways of Installing Ruby
2:26
Compiling Ruby-Source Code
3:02
Third Party Tools
3:28
Other Implementations of Ruby
4:48
Windows Installation
5:21
RubyInstaller.org
5:22
Mac OSX and Linux Installation
6:13
Mac OSX and Linux Installation
6:14
Setting Up Debian/Linux
6:42
Setting Up Debian/Linux
6:43
Installing HomeBrew
6:56
HomeBrew for MAC OSX
6:57
HomeBrew Wiki
9:44
Installing HomeBrew
10:02
Setting Up Mac OSX
11:46
HomeBrew, RVM, OSX-GCC Installer, and Install Ruby 1.9.3
11:47
Ruby Version Manager (RVM)
12:11
Ruby Version Manager (RVM) Overview
12:12
Installing Ruby Version Manager (RVM): http://rvm.io
12:35
Install RVM with Ruby
14:20
Install RVM with Ruby
14:21
Install OSX-GCC-Installer
16:18
Download and Install Package for Your OSX
16:19
Install Ruby 1.9.3
17:28
Install Ruby 1.9.3
17:29
Test It Out!
18:09
rvm-help & ruby-v
18:10
Example: rvm gemset create educator
18:52
Set It As Default!
20:47
rvm Use 1.9.3@educator--default
20:48
Intro to Ruby

22m 20s

Intro
0:00
What is Ruby?
0:06
What is Ruby?
0:07
Ruby Standard Library
0:52
Who Created Ruby?
1:22
Yukihiro Matsumoto
1:23
History
2:45
The Name 'Ruby'
2:46
Ruby v0.95
3:10
Ruby v1.0
3:56
English Language Mailing List Rubytalk
4:08
ruby-forum.com & the Mailing Lists
4:27
Ruby In The West
9:51
Ruby on Rails
10:39
The Pragmatic Programmer's Guide to Ruby
11:30
rubyonrails.org
13:34
Current Ruby
14:42
Ruby 1.8.7, Ruby 1.9.3, and Ruby 2.0
14:43
Why Programmers Enjoy Ruby?
15:40
Why Programmers Enjoy Ruby?
15:41
Ruby Is An Interpreted Language
16:21
Ruby Is An Interpreted Language
16:22
What Is It Used For?
16:50
What Is It Used For?
16:51
Ruby is Object-Oriented
18:17
Example: 5.class
18:18
Example: 0.0.class
18:54
Example: true.class
19:03
Example: nil.class
19:12
Object Class
19:19
BasicObject
19:20
Example
19:52
Superclass
20:50
Fixnum → Integer → Numeric → Object
21:32
Basic Tools for Using Ruby

27m 44s

Intro
0:00
Interactive Ruby
0:08
irb: Interactive Command-Line Environment
0:09
Example
0:49
irb-v
0:50
irb-executes terminal
1:02
1.9.3-p125 > 'hi'
1:09
Live Demonstration
1:31
Why Use Interactive Ruby?
2:21
Why Use Interactive Ruby?
2:22
RDoc
3:05
RDoc
3:06
Ruby Core Documentation
3:32
Ruby Core Documentation: Example
5:30
Ruby Core Documentation: Markup
6:12
Ruby Core Documentation: Headings
7:44
Coding Example: RDoc
9:30
Why Use RDoc?
13:02
Learning Core Ruby Functions
13:03
Generating RDoc
15:31
rdoc-help # usage
15:32
Ruby Interpreter
15:57
ruby -- help
15:58
ruby [switches] [-] program [arguments]
16:16
Example: How to Run a Ruby Script
16:28
Rake
18:38
Rake Overview
18:39
Ruby Core Documentation: Rake
19:46
Coding Example: Rake
23:14
Why Was It Created?
24:30
Why Was It Created?
24:31
Lesson Summary
25:13
Lesson Summary
25:14
IDE/script Editors: MacVIM
26:24
Ruby Specifics

20m 45s

Intro
0:00
Ruby Specifics
0:06
Comments
0:51
Hashtags
1:00
Example
1:23
Multi-Line Comment
2:04
Example
3:10
RDoc Comments
4:02
When do you generate an Rdoc?
4:10
Headings and subheadings
4:24
Examples
4:48
Generating an Rdoc - example
4:50
Common Code Conventions
6:28
For every tab use two spaces indentation
7:38
Never use tabs
7:42
Common Code Conventions (Cont.)
8:18
Camel case
8:20
Snake case
9:18
Identifiers
9:44
Constants begin with CAP letter
10:00
Examples
10:10
Identifiers with Different Scoping
10:26
Global
10:34
Instance Variable
10:40
Class Variable
10:46
Examples
10:56
Reserved Keywords
12:22
Do not use reserved keywords in code
12:25
Parentheses are Sometimes Optional
13:04
Functions do not require parentheses
13:16
When in doubt, use parentheses
13:54
Examples
14:10
Newlines Are Statement Terminators
14:20
Examples
15:10
Continuation with a Period
16:20
Period means continue to next line
16:46
Multiple Statements Allowed on a Single Line
17:38
Try not to use semi-colons
17:58
Code Blocks
18:20
Use code blocks for one liners
18:28
Examples
18:40
Recommended for multiple lines
20:16
Ruby Data Types (Part 1)

29m 37s

Intro
0:00
Overview
0:10
Ruby Data Types
0:10
Numbers
0:16
Strings
0:18
Symbols
0:24
Numbers
0:30
Numeric
0:44
Float
0:50
Complex
0:56
BigDecimal
0:58
Rational
1:00
Integer (most popular) - Fixnum and Bignum
1:06
Fixnum stores 31 bits
1:18
Bignum stores larger bits
1:24
All number objects are instances of Numeric
1:28
Integer Literals
2:28
Represent whole-numbers
2:40
Examples - Different bases
2:42
Binary
3:04
Octal
3:30
Hexadecimal
3:44
Examples
4:06
Floating Point Literals
4:45
Examples
4:58
e-value can be capital or lowercase
5:30
Example
5:44
Strings
6:16
Mutable objects
6:18
Used for inserting and deleting text, searching, and replacing
6:26
String Rdoc
6:46
Definition
7:00
String Literals
8:20
Single-Quoted
8:28
Double-Quoted (most used)
8:50
Example
9:32
Escape Sequences
11:10
Newline
11:16
Tab
11:22
Double quote
11:28
Blackslash
11:36
Interpolation
11:50
Sprintf
13:48
Unicode Escaping
14:38
Example
15:50
Delimiters
16:18
Here Documents
17:18
Example
17:25
String Operators
19:58
Concatenation
20:03
Appending
20:40
String Equality
21:04
Example
21:24
Substrings
22:00
Range object (inclusive)
22:22
String Encoding
24:52
Differences between Ruby 1.8 and 1.9
24:56
Symbols
26:02
Definitions
26:04
Examples
26:46
When to use symbols
26:54
Symbols and Strings
27:42
Symbols Rdoc
28:22
Ruby Gems

25m 50s

Intro
0:00
RubyGems
0:08
What are RubyGems?
0:24
RubyGems.org
0:44
How RubyGems are used
2:06
Java's jar utility
2:50
Unix/Linux's tar utility
3:06
What is a Gem?
3:16
Definition of Gem
3:20
Version
3:34
Date
3:44
Author
3:50
Description
5:58
What Are the Uses?
4:18
Uses for Gems
4:22
Installation
5:06
How to install RubyGems
5:30
Updating to the Latest Ruby Gems
5:54
Testing
6:22
Example
6:34
Installing Rake
7:24
Example
7:46
Verifying
9:22
Example
9:56
Structure
10:56
gem.gemspec
11:30
Specification
13:40
What is in the gem?
13:42
Who made it?
13:50
Update gem version
13:58
Example
14:10
Create Our First Gem
17:20
Steps involved
17:28
RubyGems Guides
17:36
Example
20:02
Steps Review
18:56
Create Our First Gem (Cont.)
23:08
Building the gem
19:38
Example
20:00
Installing the gem
22:32
Run it
22:52
Publish it
23:04
Get Some Gems!
25:06
rake
25:14
rails
25:19
fastercsv
25:25
koala
25:37
Ruby Data Types (Part 2)

40m 24s

Intro
0:00
Ruby Data Types
0:15
Boolean
0:21
Arrays
0:27
Hashes
0:33
Range
0:37
Boolean Types
0:42
TrueClass
0:56
FalseClass
1:12
NilClass
1:18
TrueClass Examples
2:48
FalseClass Examples
3:22
Arrays
4:16
Ordered collection of objects
4:22
Can hold different objects
4:32
Starts at index 0
4:50
Array of Strings
5:50
Example
5:52
Arrays (Cont.)
6:20
Can be created using literals
6:22
Can be created using constructors
6:54
Position and indexed value
8:04
Negative Indexed Values
8:56
Shift and Unshift
10:18
Push and Pop
11:38
.delete method
12:38
Addition and Subtraction
13:32
Union and Intersection
14:48
Insert
15:52
Iteration
16:52
Arrays Rdoc
17:48
Hashes
22:08
Maps and Associative Arrays
22:44
Created using the constructor
22:56
Created using a hash literal
24:02
Stored in a hash table
25:26
Example
25:50
Accessing Key-Values
27:46
Deletion
29:48
Iteration
31:04
Hashes Rdoc
32:04
Ranges
36:40
Two dots are inclusive
36:57
Three dots are exclusive
37:16
Example
37:50
Ranges Rdoc
38:24
Objects

1h 5m 46s

Intro
0:00
Objects
0:10
Object References
1:36
Ruby Core
2:16
Example
4:30
Creating New Objects
6:00
New Method
6:08
Initialize Method
6:31
Example
7:18
Garbage Collection
9:54
Global values always reachable
10:25
Object Identity
11:08
Every object has an object identifier
11:20
Object identifier is constant and unique
11:30
Example
11:54
Object Class
12:58
Class method
13:10
Superclass method
13:28
Object Testing
14:46
is_a?
15:49
respond_to?
16:26
String and Regexp
18:10
Comparing two object instances
20:06
Example
23:30
Object Equality
25:48
Comparing objects
25:54
equal?
25:58
Popular way to test for equality
27:16
Opposite way to test for equality
27:25
Arrays
28:30
Hash
29:42
Case equality operator
30:47
Class tests
31:16
Range tests
31:48
Symbol tests
32:32
Object Conversion
33:14
Explicit conversion
33:54
Implicit conversion
35:00
Example
36:12
Object Conversion: Kernel Module
38:22
Array
38:38
Float
39:26
Integer
39:58
String
40:10
Example
40:34
Object Conversion: Coerce
42:00
Used for mixed type numeric operations
42:08
Example
43:40
Object Conversion: Boolean
47:42
Every object has a boolean value
47:44
Example
48:54
Object Copying
50:52
dup
50:58
clone
51:03
Example
51:42
Object Freezing
57:36
Object Marshaling
58:38
Save state
59:04
Load state
59:27
Example
59:32
Tainted Objects
1:01:50
taint
1:02:08
farm field
1:02:12
Untrusted Objects
1:04:06
trust
1:04:24
untrust
1:04:34
untrusted?
1:04:42
Loops

38m 54s

Intro
0:00
Loops
0:12
while and until
0:48
for and in
0:54
iterators
1:04
enumerable in objects
1:06
While-loop
1:14
Will keep going is condition is true
1:18
Until-loop
2:58
Will keep going until condition becomes true
3:06
Single Expression Loops
4:20
Compact form
4:30
Expressed as a modifier
4:42
Do-While Loop
5:52
Executes body first
6:06
Do-Until Loop
7:54
Similar to do-while loop
7:58
Using Break Inside Loops
8:54
break
8:58
For-In Loop
11:56
for-loop
12:06
var
12:34
collection
12:54
body
13:00
Examples
13:08
Examples (Cont.)
15:54
Nested loops
16:40
Numeric Iterators
18:32
upto
18:40
downto
18:42
times
18:48
Examples
20:28
External Iterators
21:00
Enumerator class
21:04
Rdoc
21:16
Enumerables in Objects
24:35
Enumerable is a mix-in
24:41
RDoc
25:24
Commonly Used Enumerables in Objects
27:01
Array
27:19
Hash
27:51
Range
28:47
Examples
29:29
Enumerables in Objects (Cont.)
31:13
File Processing
31:15
Example
31:45
Enumerables in Objects (Cont.)
33:07
collect
33:23
select
34:11
reject
34:59
inject
35:29
Strings

28m 30s

Intro
0:00
Strings
0:08
Why do you want to get familiar with strings?
1:00
String Creation
1:16
new
1:28
empty?
1:50
length or size
2:10
Example
3:12
String Manipulation
4:40
slice
4:56
square brackets [ ]
5:02
token
5:40
[fixnum]
6:52
offset and length
8:40
chaining
12:42
String Insertion
12:56
insert
12:58
positive or negative index
13:46
String Updates
15:24
[token]
15:36
Examples
16:40
chop or chop!
17:54
chomp!
18:56
gsub
20:28
String Deletion
21:38
delete
21:38
String Reversal
22:46
reverse
22:52
String Manipulation
23:16
split(pattern=$, limit)
23:22
pattern
24:10
limit
24:15
upcase or upcase!
25:28
downcase or downcase!
26:02
swapcase
26:24
Incrementing Strings
27:26
next or next!
27:32
Check Out the Other Lessons
28:00
Ruby Data Types Part 1
28:12
Regular Expressions
28:18
Regular Expressions

33m 27s

Intro
0:00
Regular Expressions
0:10
How to create a regular expression
0:48
What goes inside
1:36
Metacharacters
3:10
Bracket expressions
3:14
Quantifiers
3:18
Anchors
3:20
Metacharacters
3:30
word and non-word characters
4:04
digit and non-digit characters
4:44
hexdigit and non-hexdigit characters
4:56
whitespace and non-whitespace characters
5:08
Examples
5:24
POSIX Bracket Expressions
7:48
Non-POSIX Bracket Expressions
9:48
Bracket Expression Examples
10:58
Quantifiers
12:34
Examples
13:30
Character Properties
17:24
Similar to POSIX bracket classes
18:22
More Character Properties
18:48
Examples
19:32
Anchors
20:08
Examples
21:14
Regular Expression Matching: Regexp Object
22:40
match
22:51
Regular Expression Matching: String Object
24:14
match
24:26
Regular Expression Modifier Characters
25:14
pat
25:38
Example
26:42
Regular Expression Modifier Objects
27:14
Example
28:38
Regexp Rdoc
30:40
Arrays

14m 35s

Intro
0:00
Arrays
0:12
Creating an Array with a Block
0:50
Alternative Ways to Create an Array
3:52
Checking the Class
5:14
Iterate through the array
5:26
Call the class method
5:28
Array Shortcuts
6:38
at(index)
6:44
delete_at(index)
7:28
first(n)
8:28
last(n)
9:28
Removing Duplicates
9:58
uniq or uniq!
10:04
Sorting the Array
10:48
sort or sort!
10:54
Getting the Index
11:35
index
11:56
rindex
12:38
Multidimensional Arrays
12:56
flatten
13:33
Check Out the Earlier Lesson
14:16
Ruby Data Types Part 2
14:26
Hashes

27m 48s

Intro
0:00
Hashes
0:12
Creating Hashes
1:18
Setting a Default Value
2:24
Accessing Hashes
4:16
Accessible by keys or by values
4:28
Keys must be unique
4:36
Creating Hashes
5:16
Comma-separated list
5:42
Hash rocket
8:28
Examples
10:16
Iterating Keys and Values
11:43
each_key
12:04
each_value
14:04
Merging Hashes
16:10
merge(other_hash)
16:20
Sorting Hashes
18:46
Replacing Hashes
20:57
replace(other_hash)
21:18
Converting Hashes to Other Classes
22:04
to_a
22:22
to_s
23:22
Example
24:34
Check Out the Earlier Lesson
27:22
Ruby Data Types Part 2
27:32
Math Operations, Part 1

28m 47s

Intro
0:00
Math Objects
0:12
Numeric
0:26
Integer
0:38
Float
1:02
Fixnum
1:14
Bignum
1:56
Rational
2:04
Math
2:24
Math Operations
2:36
Example
3:14
div(numeric)
4:54
divmod(numeric)
6:30
modulo(numeric)
7:23
quo(numeric)
8:18
remainder(numeric)
9:35
Operation Precedence 1 of 3
10:35
Operation Precedence 2 of 3
13:18
Operation Precedence 3 of 3
14:28
Abbreviated Math Operations
14:54
Move the operator in front of the equal sign
15:52
Numbers
16:36
Numeric Class
17:06
Numeric Methods
18:41
ceil
18:52
floor
19:32
round
19:50
Example with Numbers
20:20
Numeric Methods (Cont.)
22:20
truncate
22:28
num.step(limit, step)
23:02
Numeric Rdoc
25:26
Math Operations, Part 2

28m 51s

Intro
0:00
Math Operations
0:12
Math Module
0:24
Rational Numbers
0:44
Complex Numbers
0:52
Prime Numbers
0:58
Matrices
1:06
Math Module
1:12
PI and E
1:32
Math Module Methods
2:47
atan2(x,y)
2:56
cos(x)
3:14
exp(x)
3:44
Examples
4:38
log(x)
5:44
log(num, base)
6:34
log10(x)
7:04
sin(x)
7:34
sqrt(x)
7:52
tan(x)
8:06
Math Functions: Part 1 of 3
8:12
Math Functions: Part 2 of 3
9:32
Math Functions: Part 3 of 3
10:19
Math Module Rdoc
11:25
Rational Numbers
13:23
How to use
14:06
Example
15:02
Mathematical Ruby Scripts (Mathn)
16:25
Example
17:28
Complex Numbers
18:26
polar
18:56
rect
19:10
Complex Number Examples
19:18
Prime Numbers
20:14
each(ubound=nil)
20:44
prime?
21:22
Example
21:58
Matrices
23:15
build(row_size, column_size=row_size)
23:44
Example
24:44
Matrix Rdoc
24:58
Dates and Times

26m 1s

Intro
0:00
Dates and Times
0:12
Time Class
0:38
Methods of the Time Class
1:43
now
1:44
at(time)
2:10
Epoch & Unix Timestamp Conversion Tools
3:19
Components of a Time
5:07
Convert Time to an Array
5:54
to_a
6:08
Creating a New Time
6:48
Time.local
7:08
Year is required
7:22
Time.utc
8:12
What should be specified
9:30
More Methods of the Time Class
10:16
strftime(string)
11:26
RDoc
12:50
Date Library
16:46
Initializing a New Date
17:08
Parsing Dates
18:28
parse(string)
18:42
Today's Date
19:19
Date.today
19:22
Tomorrow's Date
20:22
Next
20:28
Next week
21:22
Count Down
21:26
Count Up
22:37
Components of a Date
23:20
Converting to Datetime
23:48
to_datetime
24:00
Initializing a Datetime
24:24
Converting to Time
25:23
self.to_time
25:32
Methods: Part 1

31m 24s

Intro
0:00
What is a Method?
0:12
Basic Method
0:58
Return Value
4:37
return
4:46
Factorial Example
6:18
Example
8:46
Return Two Values
10:06
Set the return keyword
10:14
Collected and returned as an array
10:28
Undefining Methods
11:22
undef method_to_undefine
11:44
Example
12:32
Method Names
13:02
Begin with lowercase letter
13:16
Separate longer words with underscores
13:26
Can end with equal sign, question mark, or exclamation point
14:03
Equal sign
14:26
Method Names with Question Mark
14:44
empty?
15:24
Method Names with Exclamation Point
16:01
mutators
16:12
! means use with caution
16:46
Method Aliases
18:05
alias new_method existing_method
18:42
Operator Methods
20:00
Operators
20:02
Array Operators
20:10
Unary Operators
20:32
Binary Operators
20:40
Example
21:28
Methods and Parentheses
25:00
Optional in most cases
25:20
Required in other cases
27:13
Methods and Blocks
27:54
Associated with blocks
28:18
block_given?
28:26
yield
28:36
Example
29:24
Methods: Part 2

20m 11s

Intro
0:00
Methods with the Unary Ampersand Operator
0:14
&
0:34
Block to a Proc
0:56
Example
2:02
Proc object
3:58
Example
5:04
Methods with Default Values
5:54
Example
7:12
Methods with variable-Length Arguments
8:05
How to create it
8:36
Example
11:06
Using Hashes with Arguments
13:02
Multiple arguments
13:08
Solution
13:30
Example
14:56
Rdoc
18:12
Classes: Part I

26m 51s

Intro
0:00
Classes
0:10
Definition of a class
0:14
Class represents a container
0:32
Can be reused
0:46
Creating our First Class
1:00
Keyword class will create new class
1:06
Name must begin with capital letter
1:30
Instantiating Our First Class
2:46
New will create a new instance of class
2:58
Initializing Values
3:58
Definition of def
4:14
Instance method
5:08
Example
7:02
Defining the to_s Method
8:24
Creating a string representation class
8:34
Example
10:54
Self in the Class
12:16
Definition of self
12:26
Example
13:54
Accessor Methods
15:52
getter methods
16:22
Example
17:00
Setter Methods
18:00
Mutator methods
18:02
Example
19:46
Automating Getter and Setter Methods
21:10
Defined in the module class
21:30
attr_reader
21:54
attr_writer
22:48
attr creates getter and setter methods
23:50
Example
24:28
Notes on Ruby's Accessor Methods
25:32
Classes: Part II

26m 42s

Intro
0:00
Defining Operators
0:10
You can define arithmetic operators
0:32
Unary Operators
0:46
Let's define operators in our class!
0:56
Example
2:52
Class Methods
6:24
Examples
6:56
Opening Up the Class
9:38
Adds an additional method
9:54
Examples
11:04
Array and Hash Access Method
15:40
Use square brackets
16:02
Define your own has access method
16:08
Example
16:56
Enumerating The Values
18:40
Define the each iterator
18:40
Testing for Equality
19:36
Class Triplex
19:50
Examples
20:54
Constants
25:00
Usually defined at the top of class
25:24
Classes: Part III

53m 36s

Intro
0:00
Class Variables
0:14
Example
2:16
Ruby Glass Jar Example
8:50
Class Instance Variables
10:20
Instance variables of class objects
10:46
Advantage of class instance variables
11:18
Examples
11:30
Method Visibility
16:16
Three types of method visibility
16:26
Public methods
17:34
Private methods
17:38
Protected methods
18:04
Invoking Method Visibility
19:21
Public , Protected, and Private Visibility
19:22
Invoking Method Visibility With Arguments
21:39
Example: Invoking Method Visibility
22:12
Class Visibility
23:31
Instance and Class Variables are Private
23:32
Constants are Public
24:00
Makes Existing Class Methods Private
24:27
Makes Existing Class Methods Public
25:08
Example: Class Visibility and class GlassJar
25:43
Subclassing
27:08
Subclassing: Subclass and Superclass
27:09
Example: Subclassing
29:43
Inheritance
30:05
Inheritance
30:06
Example: Inheritance
31:25
Subclassing and Inheritance
31:34
Descendants
31:41
Ancestors
31:56
More On Descendants and Ancestors
32:08
Extending a Class
33:27
Extending a Class
33:28
Coding Example: Extending a Class
34:24
Overriding a Method
36:41
Overriding a Method
36:42
Coding Example: Overriding a Method
37:18
Modifying Methods with Chaining
38:52
Modifying Methods with Chaining
38:53
Super
39:25
Coding Example: Modifying Methods with Chaining
39:51
The Singleton Pattern
44:52
Introduction to The Singleton Pattern
44:53
Setting Up Singleton
45:28
The Instance Method
45:58
Rdoc for Singleton: Usage
46:23
Rdoc for Singleton: Implementation
47:45
Coding Example: Singleton
49:38
Modules

24m 19s

Intro
0:00
Modules
0:04
What is Modules?
0:05
Modules Examples
0:40
Modules: Mix-Ins
3:31
What is a Mix-in?
3:32
Modules: Namespace
4:07
What is a Namespace?
4:08
Why Use a Namespace?
5:13
Example of a Namespace Module
5:59
Example of Mixing in The Module Into the Global Scope
6:00
Modules: Creation
7:04
How to Create a New Module?
7:05
Modules: Usage
8:19
How to Use It?
8:20
class Poker & class Bridge
9:13
Creating Our Module as a Mix-In
9:41
Example of a Module Using Instance Methods
9:42
Coding Example
10:20
Creating Our Module as a Namespace
12:11
Implement Class Methods for the Module
12:12
Coding Example
14:56
Loading Our Module
19:46
Loading Our Module Overview
19:47
Require & Load
20:15
Coding Example: Loading Module
20:48
Lesson Summary
23:36
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to Ruby
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
Since this lesson is not free, only the preview will appear on your website.
  • Discussion

  • Study Guides

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.
  • Learn at your own pace... anytime, anywhere!

Dates and Times

  • In this lesson, we will go over how to represent a date and time in ruby, changing time zones, and the three classes Time, Date, and DateTime.
  • The Time class represents both dats and times. It contains a thin layer over the system date and time functionality provided by the operating system.
  • Popular Methods: now, at, year, day, month, hour, min, sec, usec, zone, to_a, local, utc, strftime
  • The Date library loads up two classes Date and DateTime
  • use new to create a new date object
  • the parse method allows you to represent date and time through a date object
  • the today method will create a new date object denoting the present date
  • Methods to define components of a date: year, month, day, sunday?, thursday?

Dates and Times

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Dates and Times 0:12
  • Time Class 0:38
  • Methods of the Time Class 1:43
    • now
    • at(time)
    • Epoch & Unix Timestamp Conversion Tools
  • Components of a Time 5:07
  • Convert Time to an Array 5:54
    • to_a
  • Creating a New Time 6:48
    • Time.local
    • Year is required
    • Time.utc
    • What should be specified
  • More Methods of the Time Class 10:16
    • strftime(string)
    • RDoc
  • Date Library 16:46
  • Initializing a New Date 17:08
  • Parsing Dates 18:28
    • parse(string)
  • Today's Date 19:19
    • Date.today
  • Tomorrow's Date 20:22
    • Next
    • Next week
  • Count Down 21:26
  • Count Up 22:37
  • Components of a Date 23:20
  • Converting to Datetime 23:48
    • to_datetime
  • Initializing a Datetime 24:24
  • Converting to Time 25:23
    • self.to_time

Transcription: Dates and Times

Welcome back to Educator.com.0000

Today's lesson is on dates and times.0002

Today's lesson is over, "How do we represent a date and time in Ruby?"0010

We're going to go over the components of a date and time, and the three classes: Time, Date, and DateTime.0016

These are the main classes for the date and time functions.0032

The first thing we're going to look at is the Time class.0037

With the Time class, you can represent date and time.0041

This is a class that is a thin layer over the system date and time provided by the operating system.0045

Depending on your operating system, some platforms might have issues representing dates before 1970 or after 2038.0058

If you're on a 32-bit machine, it's more prone to having these issues.0067

The Time class--mostly you want to use this for current dates and times--for what time it is now and the day it is now.0079

This is the recommended usage for it.0094

What are the methods of the Time class? The most common one you will use is the now.0100

Now returns a time object initialized to the current system time.0106

To call this, all you do is use time.now.0112

Time.now will retrieve the current time from your system.0117

The next method we will look at is at.0124

What at does is, you pass in a value of time, and this creates a new Time object with the given time you pass in.0128

Time is the number of seconds from epoch, so if I do Time.at with 0, the time it's going to give me is 1969, December 31st, 4 o'clock, and here is your time zone.0137

If I pass in this huge number, say 1.2 billion seconds, it's going to get me 2008.0157

I can also do Time.at with...call Time.now, which will get me the current time, then to_i to convert it to number of seconds in integers, and then I can pass it, and it will get me the exact same object, essentially.0172

One question you might have is, "What is this number second from epoch?"0187

Let's take a look at that.0194

I'm loading up the epoch converter--epochconverter.com.0197

You will see that, if I reload it...actually, in real time, notice that it tells me the epoch time, and it's this huge, huge number--in the billions.0204

But, you can also convert this epoch to human-readable; you take this number, you can click this timestamp, and it will say...for my time zone right now, it is Monday, October 15th, from that timestamp.0217

Now, what is this number, essentially?--let's go down here--what is epoch time?0232

This is the UNIX epoch, or UNIX time, or POSIX time, or UNIX timestamp.0239

It's better known as the UNIX timestamp.0244

This is the number of seconds that has elapsed since January 1st, 1970, at midnight.0246

It's a very common timestamp that is used.0252

It doesn't count leap seconds.0257

Literally speaking, the epoch is UNIX time zero.0259

Epoch is often used as a synonym for UNIX time, and many UNIX systems store this as an assigned 32-bit integer, which might cause problems generating 1920 to 38.0263

There you have it; go down here; you can see it in Ruby: it's just called Time.now.0276

Convert to epoch: Time.now.to_i.0282

Let's put here...this is actually UNIX time...I like to call it the UNIX timestamp.0287

Let's look at some of the components of this Time class.0306

I call Time.now; that is going to give me the current time.0310

If I pass .year to this object, it will tell me the year I'm at; day will give me the day in numeric terms; month will give me the month in numeric terms; hour; min is minutes; sec is seconds.0315

I can also get the microseconds using this usec method.0334

When we call zone, it will get me the time zone of this Time object.0339

It says my system is in Pacific Zone time; it gets me Pacific Daylight Time.0346

Also, this Time object--you can convert it to an Array.0354

All you do is pass to_a; this converts the components to an Array.0360

There is quite a specific Array it gives back.0367

This Array: the first element will be seconds, then minute, hour, day, month, year, wday, yday, isdst, and the zone.0374

If you do t=Time.now, t.to_a, this will get you back that Array--the time Array of elements here.0387

You could also use a method to create a new time.0406

For this one, we are looking at Time.local.0412

This creates a new time in your local zone.0415

How does it get that local zone? It gets it from your operating system.0419

To do this, it does take parameters; you can pass in a year, a month, day, hour, minute, and second.0425

The year is required; it needs at least one argument; the other arguments are optional, and it will just pass in a default of 0 for that.0432

This will create a new time; year is required; other arguments are optional.0443

If I call Time.local, I'm going to get my first value, 2010, as my year.0450

That is what I'm passing in; that is my required value.0456

Notice that I actually pass in the month, but as a three-letter month; I can pass in a numeric month or a letter; so I'm passing in Jun, and then a day and hour.0459

I call Time.local, pass these parameters in, and it's going to create me a Time object, and it's going to use those parameters I passed: 2010 and June 15th, 12 o'clock.0473

You can also create a new time in the UTC time zone, or GMT--those are both the same.0490

This, again, takes the exact same parameters: year, month, day, hour, minute, second.0496

It creates a new time interpreted as UTC.0504

You can also use GM for GMT; for that, just do Time.gm, and go ahead and pass the time values in there.0507

For my example here, notice I used Time.utc; I passed in the year 2000; here is the month, which is January; day is the 1st; and hour is the first hour.0524

Here is our year...so it creates a new Time object, January 1st, 2000, at 1 o'clock.0540

Remember, the hour is from 0 to 23, so 0 will get me midnight; 23 will get me 11 p.m.0548

There are some specificities to this local and UTC--to the parameters you pass in.0568

As I said, year must be specified; month may be specified by numbers from 1 to 12, or the three-letter English month name.0576

That is just the lowercase, like jan or jun...or December, dec...0589

The last one--I just told you about this--hours are specified on a 24-hour clock, which is 0 to 23.0604

There are quite a bit of methods in this Time class.0615

If I create a new object, t=Time.new, I can start calling these.0620

One of these--I would call utc?; this will tell me true or false--is this part of the UTC time zone?0625

This will pass either a true or false value.0635

Then, if I call zone, it returns me the time zone of this Time object.0638

I can also call getutc, and it will convert this time to a UTC time and tell me what time that is.0646

I can also call getlocal, and it will convert the time to the local zone time.0652

If I were to call Time.now, and getlocal, it would get me the same time, because it is the same zone it's working in anyway.0657

I can also check what day it is; I can say, "Is it a Sunday?" by just calling sunday?; "Is this time Monday?"--monday?, and Tuesday, tuesday?.0665

One really popular method for time manipulation is this strftime method.0682

You might have seen it in other languages, too.0690

I think that is one of the reasons you see it here--because it is so popularly used in C languages and other languages.0693

This formats the time according to the directives in the string, and these directives begin with a percentage character sign.0699

There are quite a bit of directives; let's go through an example.0708

If I go ahead and do t=Time.now, and I'm just going to pass in the strftime, and I'm saying, "OK, I have this Time object; I have a certain way I want to output it."0712

I want to do year, month, day, and then show the hour, minute, seconds to it.0723

So, for my directive, I have my %Y for year, my %m for month, %d for day, and then I have my hour, my minute, and seconds.0728

With that output...it gets me my output for that Time object.0751

There are quite a bit of directives; let's look at them now.0759

Here we are at the RDoc for the Time class; we are looking at strftime.0766

Notice here, it says, "Formats time according to the directives in the given format string"--uses a percentage character...0775

After this percentage character, you do have quite a bit of modifiers here.0781

You have the flags, width, modifier, and conversion.0791

With the flags, it says you can pass the minus sign for "don't pad a numerical output."0798

Underscore: "use spaces for padding"; zero for "zeros for padding"; carat for "upcase the result string"; percentage: "change case"; colon for the %z.0806

What we want to look at is the format directives here.0820

We already looked at %Y; this is year with century; we can also do %c, which rounds it down, and %y, which will take them out of 100--so it just shows you the two numbers.0824

So, for 2012, it would just show 12.0841

Then, you have different directives with the lowercase m, which will be the month of the year, zero-padded with a zero.0844

You can also pass this underscore, which won't have it zero-padded, and -m will have no padding at all.0853

Then you can do capital B for the full month name; lowercase b will just be the three letters, and %h will also be an equivalent.0863

Then you have days of the month--you can do it non-padded, blank-padded (it would be d or e)--and then you can do the day of the year with the %j.0878

There are also some directives for the time.0890

Again, they have zero-padded and blank-padded: capital H would be zero-padded; lowercase k is blank.0894

Capital I will be zero-padded for the twelve-hour clock, and %l will be the twelve-hour clock that is blank-padded.0902

You can do the meridian indicators--pm/am, minutes of the hour, seconds of the minute (capital M, capital S)...0911

You can also get the milliseconds and the fractional seconds in digits.0919

There are also directives to get the weekday; you can get the full weekday name, the abbreviated name, and the numeric output--the day of the week.0928

There are also some things with the ISO 8601, so you can get some directives through that.0940

You can get the number of seconds from Epoch, which is the UNIX timestamp.0950

They also have combinations of it--a lot of common combinations; if I do %c, it will get my date and time; %D will get my date with month/day/year.0956

I can also run these combinations of 12-hour time, 24-hour time...and there are combinations that have already built that in there, since most commonly, you will use hour, minute, and second.0968

It's nice to have these combinations already built in there for you.0979

You will notice that they gave you a lot of common ones you might see, that you might want to use.0987

They have quite a bit of examples there, too.0994

That is the strftime method.0997

Next, we're going to look at the Date library.1005

To use it, you just require date, and this loads up two classes: one is Date, and one is DateTime.1008

These dates in Ruby are handled using the Date class.1019

First, let's look at initializing a new date.1026

To create a Date object, it is denoted with the given calendar date; so, by default, it does have some values if you don't pass anything; I can just do Date.new; it will get me a year that is -4712, a month of 1, and a day of 1.1030

So...you probably want to add in your own values.1047

I have an example here: all you do is call Date.new, and I'm passing in 2011, month is 10, day is 10; it's going to create a new Date object.1052

This is going to be a Date object.1064

That Date object is going to have defined October 10, 2011.1069

I can also pass in a Date object with just a year, and that will give me a Date object of 2012, January 1st.1075

Notice that fourth argument with new: it says "calendar"; I can actually use a specific calendar type.1084

Two popular ones are...I can specify one with the Date::Gregorian, or I can pass it with Date::Julian, and it will make sure that date follows that calendar setup.1092

Also, with the Date object, we can parse dates, and it's pretty smart on how it does it; it allows me to try different combinations.1108

I call Date.parse, pass in the string...this will parse the given representation of date and time, and it returns a Date object.1119

So, I call Date.parse('2001-01-01'); it will create my new Date object using that.1131

I can do the same without dashes; it will recognize it and be able to parse it.1138

I can also do month, day, year, or day, month, year, and both of these will be equivalent; so these are still equal.1142

Let's look at today's date.1158

They do give you a method that is called today--just Date.today--and that will create a Date object denoting the present date.1161

Just call t=Date.today, and then I can call the to_s, the string method conversion, and I get the string method of the current date.1170

So, if I call t.to_s, it will say, "OK, today is October 15, 2012."1182

Plus, there are some methods in the date that are components of it that you can use--just like the Time one.1187

If I do--say--today's date is, I can actually interpolate out some of these methods; so I can call month, day, and year, and that will actually get me the output--10 over 15, 2012.1194

There is also a method called next: this 'n' is lowercase, so it's next; and that creates a new Date object denoting the following day.1218

What I do is, I take my current object, call .next to that, and it will give me a new object.1230

If I do t=Date.today, create a new object called tomorrow equals my object t.next, and it will create a new object, which is the following day.1236

Also, with this and any other Date object, I can actually use the plus method and add on days, and it will create a new Date object to it.1251

It will automatically do all the typecasting and updating for me.1260

If I do tomorrow, let's say tomorrow is the 16th--and I add +7, it will create a new Date object for October 23rd, 2012.1265

Now, let's look at some of the countdown methods.1282

You don't see these in the Time method at all, but...1285

There is one method called downto, and I can count down, from the starting to the end; and it takes one parameter, which is the last day of the countdown.1289

Then, I can actually say, for each day it's counting down, to do some type of process.1303

This is a countdown of days, running block for each day--block being my code block.1309

For this, I do t=Date.today, get the current date, and then I say, "I want to go down two days," so I just pass t minus 2.1316

And then I tell it that I just want to output the day each time it does this.1327

For the first one, it's going to say today's date, October 15th.1331

Then, it's going to October 14th, October 13th, and this is the last day, so it's going to stop here, and that is the end of my countdown.1336

I can do this for each time; so I can do really complex stuff here; I don't have to just output the date.1343

I can output whatever I want in this code block.1349

There is also a method to count up: I can start at a certain date and count my way up.1354

Just like the downto, this one is called upto, but instead, it has a count up date, and again, I can pass in my code block for each date it's at.1360

For example, I just have Date.today, t; I say, "I want to go up to two days," so I take my current day and add 2 to that.1371

It's going to output October 15th for the first one; then it's going to go up to 16th; and then it's going to hit that countup date, that max: October 17th.1381

That is when it's going to stop counting up.1391

Let's look at some of the components of Date: there are not as many as Time.1397

It has year, month, and day: so year 2012, month 10, day 15.1402

It also has those common day methods: is it Sunday? Is it Thursday?1410

You just write sunday?, thursday?--it will tell you true or false--is it Sunday? is it Thursday?1415

Now, let's look at DateTime; this one allows us to pass in the time--the hour, minute, second--to it, also.1427

To do that, I take my Date object and call to_datetime.1436

This returns a DateTime object.1441

If I pass it from my current date today, since there isn't any time initially in it, it's going to create the new DateTime object, but the time elements will all just be 0 for now.1445

How do I initialize my own DateTime?--I want to specify the time to it.1462

You can just use the DateTime.new...this is actually date, time...DateTime.new.1467

You can pass your month, day, hour, minute, second, and the offset.1481

This will create a DateTime object denoting the given calendar date.1486

For example, I have here year 2001, month February, day--the 3rd, hours--4, minutes--5, and seconds is 6.1492

It creates this new DateTime object; February 3rd, 2001, at 4:05 and 6 seconds.1505

It has a 0 offset, since I didn't set one.1517

You can also convert this to a Time: take your object, and call to_time to that, and this will return a Time object denoting the datetime.1524

To do this, I just do d=DateTime.new--I could use the today method, too--and just do d.to_time, and that will convert your object to Time.1540

Other than that, that is the end of dates and times in Ruby.1553

I hope this is useful, and see you next time on Educator.com!1557

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.