knjrbfw 0.0.29 → 0.0.30
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/knjrbfw.gemspec +2 -1
- data/lib/knj/datet.rb +204 -6
- data/lib/knj/errors.rb +9 -0
- data/lib/knj/hash_methods.rb +10 -0
- data/lib/knj/http2.rb +62 -1
- data/lib/knj/knjdb/libknjdb.rb +99 -1
- data/lib/knj/knjdb/revision.rb +59 -34
- data/lib/knj/memory_analyzer.rb +13 -0
- data/lib/knj/os.rb +12 -0
- data/lib/knj/process.rb +5 -25
- data/lib/knj/process_meta.rb +13 -0
- data/lib/knj/threadsafe.rb +112 -25
- data/spec/threadsafe_spec.rb +57 -0
- metadata +15 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.30
|
data/knjrbfw.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{knjrbfw}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.30"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
@@ -258,6 +258,7 @@ Gem::Specification.new do |s|
|
|
258
258
|
"spec/process_spec.rb",
|
259
259
|
"spec/spec_helper.rb",
|
260
260
|
"spec/strings_spec.rb",
|
261
|
+
"spec/threadsafe_spec.rb",
|
261
262
|
"spec/web_spec.rb",
|
262
263
|
"testfiles/image.jpg"
|
263
264
|
]
|
data/lib/knj/datet.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
require "time"
|
2
2
|
|
3
|
+
#This class handels various time- and date-specific behaviour in a friendly way.
|
4
|
+
#===Examples
|
5
|
+
# datet = Knj::Datet.new #=> 2012-05-03 20:35:16 +0200
|
6
|
+
# datet = Knj::Datet.new(Time.now) #=> 2012-05-03 20:35:16 +0200
|
7
|
+
# datet.months + 5 #=> 2012-10-03 20:35:16 +0200
|
8
|
+
# datet.days + 64 #=> 2012-12-06 20:35:16 +010
|
3
9
|
class Knj::Datet
|
4
10
|
attr_accessor :time
|
5
11
|
|
@@ -7,6 +13,16 @@ class Knj::Datet
|
|
7
13
|
@time = time
|
8
14
|
end
|
9
15
|
|
16
|
+
#Goes forward day-by-day and stops at a date matching the criteria given.
|
17
|
+
#
|
18
|
+
#===Examples
|
19
|
+
# datet.time #=> 2012-05-03 19:36:08 +0200
|
20
|
+
#
|
21
|
+
#Try to find next saturday.
|
22
|
+
# datet.find(:day, :day_in_week => 5) #=> 2012-05-05 19:36:08 +0200
|
23
|
+
#
|
24
|
+
#Try to find next wednesday by Time's wday-method.
|
25
|
+
# datet.find(:day, :wday => 3) #=> 2012-05-09 19:36:08 +0200
|
10
26
|
def find(incr, args)
|
11
27
|
count = 0
|
12
28
|
while true
|
@@ -29,6 +45,11 @@ class Knj::Datet
|
|
29
45
|
end
|
30
46
|
end
|
31
47
|
|
48
|
+
#Add a given amount of minutes to the object.
|
49
|
+
#===Examples
|
50
|
+
# datet = Knj::Datet.new #=> 2012-05-03 17:39:45 +0200
|
51
|
+
# datet.add_mins(30)
|
52
|
+
# datet.time #=> 2012-05-03 18:08:45 +0200
|
32
53
|
def add_mins(mins = 1)
|
33
54
|
mins = mins.to_i
|
34
55
|
cur_mins = @time.min
|
@@ -49,6 +70,10 @@ class Knj::Datet
|
|
49
70
|
return self
|
50
71
|
end
|
51
72
|
|
73
|
+
#Adds a given amount of hours to the object.
|
74
|
+
#===Examples
|
75
|
+
# datet = Knj::Datet.new
|
76
|
+
# datet.add_hours(2)
|
52
77
|
def add_hours(hours = 1)
|
53
78
|
hours = hours.to_i
|
54
79
|
cur_hour = @time.hour
|
@@ -69,6 +94,11 @@ class Knj::Datet
|
|
69
94
|
return self
|
70
95
|
end
|
71
96
|
|
97
|
+
#Adds a given amount of days to the object.
|
98
|
+
#===Examples
|
99
|
+
# datet = Knj::Datet.new #=> 2012-05-03 17:42:27 +0200
|
100
|
+
# datet.add_days(29)
|
101
|
+
# datet.time #=> 2012-06-01 17:42:27 +0200
|
72
102
|
def add_days(days = 1)
|
73
103
|
days = days.to_i
|
74
104
|
return self if days == 0
|
@@ -93,6 +123,11 @@ class Knj::Datet
|
|
93
123
|
return self
|
94
124
|
end
|
95
125
|
|
126
|
+
#Adds a given amount of months to the object.
|
127
|
+
#===Examples
|
128
|
+
# datet.time #=> 2012-06-01 17:42:27 +0200
|
129
|
+
# datet.add_months(2)
|
130
|
+
# datet.time #=> 2012-08-01 17:42:27 +0200
|
96
131
|
def add_months(months = 1)
|
97
132
|
months = months.to_i
|
98
133
|
cur_month = @time.month
|
@@ -120,6 +155,11 @@ class Knj::Datet
|
|
120
155
|
return self
|
121
156
|
end
|
122
157
|
|
158
|
+
#Adds a given amount of years to the object.
|
159
|
+
#===Examples
|
160
|
+
# datet.time #=> 2012-08-01 17:42:27 +0200
|
161
|
+
# datet.add_years(3)
|
162
|
+
# datet.time #> 2014-08-01 17:42:27 +0200
|
123
163
|
def add_years(years = 1)
|
124
164
|
next_year = @time.year + years.to_i
|
125
165
|
@time = self.stamp(:datet => false, :year => next_year)
|
@@ -127,6 +167,12 @@ class Knj::Datet
|
|
127
167
|
end
|
128
168
|
|
129
169
|
#Is a year a leap year in the Gregorian calendar? Copied from Date-class.
|
170
|
+
#===Examples
|
171
|
+
# if Knj::Datet.gregorian_leap?(2005)
|
172
|
+
# print "2005 is a gregorian-leap year."
|
173
|
+
# else
|
174
|
+
# print "2005 is not a gregorian-leap year."
|
175
|
+
# end
|
130
176
|
def self.gregorian_leap?(y)
|
131
177
|
if Date.respond_to?("gregorian_leap?")
|
132
178
|
return Date.gregorian_leap?(y)
|
@@ -139,7 +185,10 @@ class Knj::Datet
|
|
139
185
|
end
|
140
186
|
end
|
141
187
|
|
142
|
-
#Returns the number of days in the
|
188
|
+
#Returns the number of days in the month.
|
189
|
+
#===Examples
|
190
|
+
# datet = Knj::Datet.new
|
191
|
+
# print "There are #{datet.days_in_month} days in the current month."
|
143
192
|
def days_in_month
|
144
193
|
return 29 if month == 2 and Knj::Datet.gregorian_leap?(self.year)
|
145
194
|
|
@@ -148,6 +197,7 @@ class Knj::Datet
|
|
148
197
|
return days_in_months[@time.month]
|
149
198
|
end
|
150
199
|
|
200
|
+
#Returns the day in the week. Monday being 1 and sunday being 6.
|
151
201
|
def day_in_week
|
152
202
|
diw = @time.strftime("%w").to_i
|
153
203
|
if diw == 0
|
@@ -159,46 +209,63 @@ class Knj::Datet
|
|
159
209
|
return diw
|
160
210
|
end
|
161
211
|
|
212
|
+
#Returns the days name as a string.
|
162
213
|
def day_name
|
163
214
|
return @time.strftime("%A")
|
164
215
|
end
|
165
216
|
|
217
|
+
#Returns the months name as a string.
|
166
218
|
def month_name
|
167
219
|
return @time.strftime("%B")
|
168
220
|
end
|
169
221
|
|
222
|
+
#Returns the year as an integer.
|
170
223
|
def year
|
171
224
|
return @time.year
|
172
225
|
end
|
173
226
|
|
227
|
+
#Returns the hour as an integer.
|
174
228
|
def hour
|
175
229
|
return @time.hour
|
176
230
|
end
|
177
231
|
|
232
|
+
#Returns the minute as an integer.
|
178
233
|
def min
|
179
234
|
return @time.min
|
180
235
|
end
|
181
236
|
|
237
|
+
#Changes the year to the given year.
|
238
|
+
# datet = Knj::Datet.now #=> 2014-05-03 17:46:11 +0200
|
239
|
+
# datet.year = 2005
|
240
|
+
# datet.time #=> 2005-05-03 17:46:11 +0200
|
182
241
|
def year=(newyear)
|
183
242
|
@time = self.stamp(:datet => false, :year => newyear)
|
184
243
|
end
|
185
244
|
|
245
|
+
#Returns the month as an integer.
|
186
246
|
def month
|
187
247
|
@mode = :months
|
188
248
|
return @time.month
|
189
249
|
end
|
190
250
|
|
251
|
+
#Returns the day in month as an integer.
|
191
252
|
def date
|
192
253
|
@mode = :days
|
193
254
|
return @time.day
|
194
255
|
end
|
195
256
|
|
257
|
+
#Returns the weekday of the week as an integer. Monday being the first and sunday being the last.
|
196
258
|
def wday_mon
|
197
259
|
wday = @time.wday
|
198
260
|
return 0 if wday == 6
|
199
261
|
return wday - 1
|
200
262
|
end
|
201
263
|
|
264
|
+
#Changes the date to a given date.
|
265
|
+
#===Examples
|
266
|
+
# datet.time #=> 2005-05-03 17:46:11 +0200
|
267
|
+
# datet.date = 8
|
268
|
+
# datet.time #=> 2005-05-08 17:46:11 +0200
|
202
269
|
def date=(newday)
|
203
270
|
newday = newday.to_i
|
204
271
|
|
@@ -211,6 +278,11 @@ class Knj::Datet
|
|
211
278
|
return self
|
212
279
|
end
|
213
280
|
|
281
|
+
#Changes the hour to a given new hour.
|
282
|
+
#===Examples
|
283
|
+
# datet.time #=> 2012-05-09 19:36:08 +0200
|
284
|
+
# datet.hour = 5
|
285
|
+
# datet.time #=> 2012-05-09 05:36:08 +0200
|
214
286
|
def hour=(newhour)
|
215
287
|
newhour = newhour.to_i
|
216
288
|
day = @time.day
|
@@ -233,21 +305,40 @@ class Knj::Datet
|
|
233
305
|
return self
|
234
306
|
end
|
235
307
|
|
308
|
+
#Changes the minute to a given new minute.
|
309
|
+
#===Examples
|
310
|
+
# datet.time #=> 2012-05-09 05:36:08 +0200
|
311
|
+
# datet.min = 35
|
312
|
+
# datet.time #=> 2012-05-09 05:35:08 +0200
|
236
313
|
def min=(newmin)
|
237
314
|
@time = self.stamp(:datet => false, :min => newmin.to_i)
|
238
315
|
end
|
239
316
|
|
317
|
+
#Changes the second to a given new second.
|
318
|
+
#===Examples
|
319
|
+
# datet.time #=> 2012-05-09 05:35:08 +0200
|
320
|
+
# datet.sec = 20
|
321
|
+
# datet.time #=> 2012-05-09 05:35:20 +0200
|
240
322
|
def sec=(newsec)
|
241
323
|
@time = self.stamp(:datet => false, :sec => newsec.to_i)
|
242
324
|
end
|
243
325
|
|
244
326
|
alias :day :date
|
245
327
|
|
328
|
+
#Changes the month to a given new month.
|
329
|
+
#===Examples
|
330
|
+
# datet.time #=> 2012-05-09 05:35:20 +0200
|
331
|
+
# datet.month = 7
|
332
|
+
# datet.time #=> 2012-07-09 05:35:20 +0200
|
246
333
|
def month=(newmonth)
|
247
334
|
@time = self.stamp(:datet => false, :month => newmonth)
|
248
335
|
end
|
249
336
|
|
250
|
-
|
337
|
+
#Turns the given argument into a new Time-object.
|
338
|
+
#===Examples
|
339
|
+
# time = Knj::Datet.arg_to_time(datet) #=> <Time>-object
|
340
|
+
# time = Knj::Datet.arg_to_time(Time.now) #=> <Time>-object
|
341
|
+
def self.arg_to_time(datet)
|
251
342
|
if datet.is_a?(Knj::Datet)
|
252
343
|
return datet.time
|
253
344
|
elsif datet.is_a?(Time)
|
@@ -259,7 +350,7 @@ class Knj::Datet
|
|
259
350
|
|
260
351
|
include Comparable
|
261
352
|
def <=>(timeobj)
|
262
|
-
secs = arg_to_time(timeobj).to_i
|
353
|
+
secs = Knj::Datet.arg_to_time(timeobj).to_i
|
263
354
|
|
264
355
|
if secs > @time.to_i
|
265
356
|
return -1
|
@@ -270,6 +361,11 @@ class Knj::Datet
|
|
270
361
|
end
|
271
362
|
end
|
272
363
|
|
364
|
+
#This method is used for adding values to the object based on the current set mode.
|
365
|
+
#===Examples
|
366
|
+
#Add two months to the datet.
|
367
|
+
# datet.months
|
368
|
+
# datet.add_something(2)
|
273
369
|
def add_something(val)
|
274
370
|
val = -val if @addmode == "-"
|
275
371
|
return self.add_years(val) if @mode == :years
|
@@ -280,41 +376,77 @@ class Knj::Datet
|
|
280
376
|
raise "No such mode: #{@mode}"
|
281
377
|
end
|
282
378
|
|
379
|
+
#Minus something.
|
380
|
+
#===Examples
|
381
|
+
# datet.months - 5
|
382
|
+
# datet.years - 2
|
283
383
|
def -(val)
|
284
384
|
@addmode = "-"
|
285
385
|
self.add_something(val)
|
286
386
|
end
|
287
387
|
|
388
|
+
#Add something.
|
389
|
+
#===Examples
|
390
|
+
# datet.months + 5
|
391
|
+
# datet.months + 2
|
288
392
|
def +(val)
|
289
393
|
@addmode = "+"
|
290
394
|
self.add_something(val)
|
291
395
|
end
|
292
396
|
|
397
|
+
#Sets the mode to hours and gets ready to plus or minus.
|
398
|
+
#===Examples
|
399
|
+
# datet.time #=> 2005-05-08 17:46:11 +0200
|
400
|
+
# datet.hours + 5
|
401
|
+
# datet.time #=> 2005-05-08 22:46:11 +0200
|
293
402
|
def hours
|
294
403
|
@mode = :hours
|
295
404
|
return self
|
296
405
|
end
|
297
406
|
|
407
|
+
#Sets the mode to minutes and gets ready to plus or minus.
|
408
|
+
#===Examples
|
409
|
+
# datet.time #=> 2005-05-08 22:46:11 +0200
|
410
|
+
# datet.mins + 5
|
411
|
+
# datet.mins #=> 2005-05-08 22:51:11 +0200
|
298
412
|
def mins
|
299
413
|
@mode = :mins
|
300
414
|
return self
|
301
415
|
end
|
302
416
|
|
417
|
+
#Sets the mode to days and gets ready to plus or minus.
|
418
|
+
#===Examples
|
419
|
+
# datet.time #=> 2005-05-08 22:51:11 +0200
|
420
|
+
# datet.days + 26
|
421
|
+
# datet.time #=> 2005-06-03 22:51:11 +0200
|
303
422
|
def days
|
304
423
|
@mode = :days
|
305
424
|
return self
|
306
425
|
end
|
307
426
|
|
427
|
+
#Sets the mode to months and gets ready to plus or minus.
|
428
|
+
#===Examples
|
429
|
+
# datet.time #=> 2005-06-03 22:51:11 +0200
|
430
|
+
# datet.months + 14
|
431
|
+
# datet.time #=> 2006-08-01 22:51:11 +0200
|
308
432
|
def months
|
309
433
|
@mode = :months
|
310
434
|
return self
|
311
435
|
end
|
312
436
|
|
437
|
+
#Sets the mode to years and gets ready to plus or minus.
|
438
|
+
#===Examples
|
439
|
+
# datet.time #=> 2006-08-01 22:51:11 +0200
|
440
|
+
# datet.years + 5
|
441
|
+
# datet.time #=> 2011-08-01 22:51:11 +0200
|
313
442
|
def years
|
314
443
|
@mode = :years
|
315
444
|
return self
|
316
445
|
end
|
317
446
|
|
447
|
+
#Returns a new Knj::Datet- or Time-object based on the arguments.
|
448
|
+
#===Examples
|
449
|
+
# time = datet.stamp(:datet => false, :min => 15, :day => 5) #=> 2012-07-05 05:15:20 +0200
|
318
450
|
def stamp(args)
|
319
451
|
vars = {:year => @time.year, :month => @time.month, :day => @time.day, :hour => @time.hour, :min => @time.min, :sec => @time.sec}
|
320
452
|
|
@@ -331,6 +463,11 @@ class Knj::Datet
|
|
331
463
|
return time
|
332
464
|
end
|
333
465
|
|
466
|
+
#Returns the time as a database-valid string.
|
467
|
+
#===Examples
|
468
|
+
# datet.time #=> 2011-08-01 22:51:11 +0200
|
469
|
+
# datet.dbstr #=> "2011-08-01 22:51:11"
|
470
|
+
# datet.dbstr(:time => false) #=> "2011-08-01"
|
334
471
|
def dbstr(args = {})
|
335
472
|
str = "%04d" % @time.year.to_s + "-" + "%02d" % @time.month.to_s + "-" + "%02d" % @time.day.to_s
|
336
473
|
|
@@ -341,6 +478,10 @@ class Knj::Datet
|
|
341
478
|
return str
|
342
479
|
end
|
343
480
|
|
481
|
+
#Parses the date from a database-format.
|
482
|
+
#===Examples
|
483
|
+
# datet = Knj::Datet.from_dbstr("2011-08-01 22:51:11")
|
484
|
+
# datet.time #=> 2011-08-01 22:51:11 +0200
|
344
485
|
def self.from_dbstr(date_string)
|
345
486
|
if date_string.is_a?(Time)
|
346
487
|
return Knj::Datet.new(date_string)
|
@@ -354,21 +495,33 @@ class Knj::Datet
|
|
354
495
|
return Knj::Datet.new(Time.local(*ParseDate.parsedate(date_string.to_s)))
|
355
496
|
end
|
356
497
|
|
498
|
+
#Alias for 'from_dbstr'.
|
357
499
|
def self.parse(str)
|
358
500
|
return Knj::Datet.from_dbstr(str)
|
359
501
|
end
|
360
502
|
|
503
|
+
#Returns true of the given stamp is a 'nullstamp'.
|
504
|
+
#===Examples
|
505
|
+
# Knj::Datet.is_nullstamp?("0000-00-00") #=> true
|
506
|
+
# Knj::Datet.is_nullstamp?("0000-00-00 00:00:00") #=> true
|
507
|
+
# Knj::Datet.is_nullstamp?("") #=> true
|
508
|
+
# Knj::Datet.is_nullstamp?("1985-06-17") #=> false
|
361
509
|
def self.is_nullstamp?(stamp)
|
362
510
|
return true if !stamp or stamp == "0000-00-00" or stamp == "0000-00-00 00:00:00" or stamp.to_s.strip == ""
|
363
511
|
return false
|
364
512
|
end
|
365
513
|
|
366
|
-
#Returns the day of the year (0-365).
|
514
|
+
#Returns the day of the year (0-365) as an integer.
|
367
515
|
def day_of_year
|
368
516
|
return @time.strftime("%j").to_i
|
369
517
|
end
|
370
518
|
|
371
|
-
#Returns how many days there is between the two timestamps given.
|
519
|
+
#Returns how many days there is between the two timestamps given as an integer.
|
520
|
+
#===Examples
|
521
|
+
# d1 = Knj::Datet.new #=> 2012-05-03 18:04:12 +0200
|
522
|
+
# d2 = Knj::Datet.new #=> 2012-05-03 18:04:16 +0200
|
523
|
+
# d2.months + 5 #=> 2012-10-03 18:04:16 +0200
|
524
|
+
# Knj::Datet.days_between(d1, d2) #=> 153
|
372
525
|
def self.days_between(t1, t2)
|
373
526
|
raise "Timestamp 2 should be larger than timestamp 1." if t2 < t1
|
374
527
|
|
@@ -389,6 +542,11 @@ class Knj::Datet
|
|
389
542
|
return upto + after
|
390
543
|
end
|
391
544
|
|
545
|
+
#Returns a string based on the date and time.
|
546
|
+
#===Examples
|
547
|
+
# datet.out #=> "03/05 2012 - 18:04"
|
548
|
+
# datet.out(:time => false) #=> "03/05 2012"
|
549
|
+
# datet.out(:date => false) #=> "18:04"
|
392
550
|
def out(args = {})
|
393
551
|
str = ""
|
394
552
|
date_shown = false
|
@@ -422,6 +580,11 @@ class Knj::Datet
|
|
422
580
|
return str
|
423
581
|
end
|
424
582
|
|
583
|
+
#Parses various objects into Knj::Datet-objects.
|
584
|
+
#===Examples
|
585
|
+
# datet = Knj::Datet.in("1985-06-17") #=> 1985-06-17 00:00:00 +0200
|
586
|
+
# datet = Knj::Datet.in("1985-06-17 10:00:00") #=> 1985-06-17 10:00:00 +0200
|
587
|
+
# datet = Knj::Datet.in("17/06 1985 10:00") #=> 1985-06-17 10:00:00 +0200
|
425
588
|
def self.in(timestr)
|
426
589
|
if timestr.is_a?(Time)
|
427
590
|
return Knj::Datet.new(timestr)
|
@@ -480,7 +643,7 @@ class Knj::Datet
|
|
480
643
|
raise Knj::Errors::InvalidData.new("Wrong format: '#{timestr}', class: '#{timestr.class.name}'")
|
481
644
|
end
|
482
645
|
|
483
|
-
#Returns a hash with the month-no as key and month-name as value.
|
646
|
+
#Returns a hash with the month-no as key and month-name as value. It uses the method "_" to translate the months names. So GetText or another method has to be defined.
|
484
647
|
def self.months_arr(args = {})
|
485
648
|
ret = {
|
486
649
|
1 => _("January"),
|
@@ -509,6 +672,7 @@ class Knj::Datet
|
|
509
672
|
return ret
|
510
673
|
end
|
511
674
|
|
675
|
+
#Returns a hash with the day-number as value (starting with 1 for monday). It uses the method "_" to translate the months names.
|
512
676
|
def self.days_arr(args = {})
|
513
677
|
ret = {
|
514
678
|
1 => _("Monday"),
|
@@ -532,6 +696,11 @@ class Knj::Datet
|
|
532
696
|
return ret
|
533
697
|
end
|
534
698
|
|
699
|
+
#Returns the month-number for a given string (starting with 1 for january).
|
700
|
+
#===Examples
|
701
|
+
# Knj::Datet.month_str_to_no("JaNuArY") #=> 1
|
702
|
+
# Knj::Datet.month_str_to_no("DECEMBER") #=> 12
|
703
|
+
# Knj::Datet.month_str_to_no("kasper") #=> <Error>-raised
|
535
704
|
def self.month_str_to_no(str)
|
536
705
|
ret = {
|
537
706
|
"jan" => 1,
|
@@ -580,21 +749,36 @@ class Knj::Datet
|
|
580
749
|
return @time.to_s
|
581
750
|
end
|
582
751
|
|
752
|
+
#This returns a code-string that can be used to recreate the Knj::Datet-object.
|
753
|
+
#===Examples
|
754
|
+
# code = datet.code #=> "1985061710000000000"
|
755
|
+
# newdatet = Knj::Datet.in(code) #=> 1985-06-17 10:00:00 +0200
|
583
756
|
def code
|
584
757
|
return "#{"%04d" % @time.year}#{"%02d" % @time.month}#{"%02d" % @time.day}#{"%02d" % @time.hour}#{"%02d" % @time.min}#{"%02d" % @time.sec}#{"%05d" % @time.usec}"
|
585
758
|
end
|
586
759
|
|
760
|
+
#Returns the unix timestamp for this object.
|
761
|
+
#===Examples
|
762
|
+
# datet.unixt #=> 487843200
|
763
|
+
# datet.to_i #=> 487843200
|
587
764
|
def unixt
|
588
765
|
return @time.to_i
|
589
766
|
end
|
590
767
|
|
591
768
|
alias :to_i :unixt
|
592
769
|
|
770
|
+
#Returns the HTTP-date that can be used in headers and such.
|
771
|
+
#===Examples
|
772
|
+
# datet.httpdate #=> "Mon, 17 Jun 1985 08:00:00 GMT"
|
593
773
|
def httpdate
|
594
774
|
require "time"
|
595
775
|
return @time.httpdate
|
596
776
|
end
|
597
777
|
|
778
|
+
#Returns various information about the offset as a hash.
|
779
|
+
#===Examples
|
780
|
+
# datet.time #=> 1985-06-17 10:00:00 +0200
|
781
|
+
# datet.offset_info #=> {:sign=>"+", :hours=>2, :mins=>0, :secs=>0}
|
598
782
|
def offset_info
|
599
783
|
offset_secs = @time.gmt_offset
|
600
784
|
|
@@ -618,17 +802,27 @@ class Knj::Datet
|
|
618
802
|
}
|
619
803
|
end
|
620
804
|
|
805
|
+
#Returns the offset as a string.
|
806
|
+
#===Examples
|
807
|
+
# datet.offset_str #=> "+0200"
|
621
808
|
def offset_str
|
622
809
|
offset_info_data = self.offset_info
|
623
810
|
return "#{offset_info_data[:sign]}#{"%02d" % offset_info_data[:hours]}#{"%02d" % offset_info_data[:mins]}"
|
624
811
|
end
|
625
812
|
|
626
813
|
#Returns 'localtime' as of 1.9 - even in 1.8 which does it different.
|
814
|
+
#===Examples
|
815
|
+
# datet.localtime_str #=> "1985-06-17 10:00:00 +0200"
|
627
816
|
def localtime_str
|
628
817
|
return "#{"%04d" % @time.year}-#{"%02d" % @time.month}-#{"%02d" % @time.day} #{"%02d" % @time.hour}:#{"%02d" % @time.min}:#{"%02d" % @time.sec} #{self.offset_str}"
|
629
818
|
end
|
630
819
|
|
631
820
|
#Returns a human readable string based on the difference from the current time and date.
|
821
|
+
#===Examples
|
822
|
+
# datet.time #=> 1985-06-17 10:00:00 +0200
|
823
|
+
# datet.ago_str #=> "27 years ago"
|
824
|
+
# datet = Knj::Datet.new #=> 2012-05-03 20:31:58 +0200
|
825
|
+
# datet.ago_str #=> "18 seconds ago"
|
632
826
|
def ago_str(args = {})
|
633
827
|
args = {
|
634
828
|
:year_ago_str => "%s year ago",
|
@@ -682,6 +876,10 @@ class Knj::Datet
|
|
682
876
|
return args[:right_now_str]
|
683
877
|
end
|
684
878
|
|
879
|
+
#Returns the object as a human understandable string.
|
880
|
+
#===Examples
|
881
|
+
# datet.time #=> 2012-05-03 20:31:58 +0200
|
882
|
+
# datet.human_str #=> "20:31"
|
685
883
|
def human_str(args = {})
|
686
884
|
args = {
|
687
885
|
:time => true,
|