রেলস: ইউটিসি ডেটটাইমকে অন্য সময় অঞ্চলে রূপান্তর করুন


উত্তর:


206
time.in_time_zone(time_zone)

উদাহরণ:

zone = ActiveSupport::TimeZone.new("Central Time (US & Canada)")
Time.now.in_time_zone(zone)

বা শুধু

Time.now.in_time_zone("Central Time (US & Canada)")

আপনি এ্যাকটিভসপোর্ট টাইম জোনের নামগুলি খুঁজে পেতে পারেন:

ActiveSupport::TimeZone.all.map(&:name)
# or for just US
ActiveSupport::TimeZone.us_zones.map(&:name)

আইআরবি-তে, যখন আমি টাইম.উন.ইন.ইন.টাইম_জোন ('সিএসটি') চেষ্টা করি তখন আমি "টাইম_জোন" -র মধ্যে অপরিবর্তিত পদ্ধতিটি পেয়েছি। এটি কাজ করার জন্য আমার কি রেল ক্লাস রয়েছে?
ড্রয় জনসন

রেলের কোন সংস্করণ আপনি ব্যবহার করছেন? আপনি যদি সময়.জোন.উন.ইন.ইন.টাইম_জোন (...) করেন তবে কি এটি কাজ করে?
এপ্রিলকে 10:49 এ 14

13
এটি require 'active_support/time'প্রথমে রেলের বাইরে ব্যবহার করতে ।
সুনাকু

3
আপনি চালিয়ে সর্বকালের অঞ্চল তালিকাভুক্ত করতে পারেন rake time:zones:all। এছাড়াও দেখুন rake -D time। ডিফল্ট সময় অঞ্চল সেট করুন config/application.rb
ব্যবহারকারী 664833

1
@ অ্যাডাম এবারলিন রেলগুলিতে আপনি সাধারণত অ্যাক্টিভসপোর্ট: টাইমউইথজোন ব্যবহার করেন, ডেটটাইম নয়। এই সমস্ত কোড রুবি ডেটটাইম অবজেক্টগুলির পাশাপাশি টাইম অবজেক্টগুলিতে কাজ করে।
6'12

6

যদি Time.zoneএটি আপনার কাঙ্ক্ষিত সময় অঞ্চল হয় তবে আপনি ব্যবহার করতে পারেন@date.to_time.to_datetime

> @date
=> Tue, 02 Sep 2014 23:59:59 +0000
> @date.class
=> DateTime
> @date.to_time
=> 2014-09-02 12:59:59 -1100
> @date.to_time.to_datetime
=> Tue, 02 Sep 2014 12:59:59 -1100 

5 টি `টাইম.জোন # => ইউরোপ / প্যারিস আমার_সংশ্লিষ্ট # => বুধ, 29 মার্চ 2017 19:00:20 +0200 my_date.to_Time # =>" 2017-03-29T17: 00: 20.000+ 00:00 "my_date.to_Time.to_datetime # => বুধ, 29 মার্চ 2017 17:00:20 +0000`
সিরিল ডুচন-ডরিস

5

সরল রুবিতে, শুধুমাত্র সাথে require 'date', এই new_offsetপদ্ধতিটি ব্যবহার করুন :

require 'date'

d=DateTime.parse('2000-01-01 12:00 +0200')
l=d.new_offset('-0700')
u=l.new_offset('UTC')
puts "#{u.strftime('%a %F %T %Z')} ❖ #{l.strftime('%a %F %T %Z')}"

রুবি ২.৩..7 দিয়ে পরীক্ষা করা হয়েছে যা ম্যাক ওএস এক্স 10.13 এ স্ট্যান্ডার্ড এসেছে।


3

অ্যাক্টিভসপোর্টের টাইমবিথজোন অবজেক্টগুলি টাইমজোন দ্বারা চালিত করে দেখুন। অ্যাক্টিভসপোর্টটি কোনও ইউটিসি সময়কে একটি নির্দিষ্ট টাইমজোন সময় অঞ্চলে রূপান্তর করার জন্য ইন_টাইম_জোন পদ্ধতি সরবরাহ করে। মেকেদের উত্তর কোডটি দেখায়।


আমার ক্লাসে টাইমউইথজোন আমদানির সিনট্যাক্সটি কী? বা আমি কি এটির সাথে ডিফল্টরূপে পেয়েছি?
ড্রিউ জনসন

1
আমি বিশ্বাস করি আপনি এটি ডিফল্টরূপে পেয়েছেন। মেককেডে আপনার প্রয়োজনীয় কোড রয়েছে তবে আপনি এটি আরবিতে দেখতে পাবেন না। আপনার এটি রেলগুলিতে চালানো দরকার।
ফ্রেড

আপনি ঠিক বলেছেন - ধন্যবাদ ফ্রেড - এটি ডিফল্টরূপে রেলগুলির সাথে আসে। আমি স্ট্রগুলিতে আঁকড়ে ধরছিলাম, চেষ্টা করছিলাম এটি আইআরবিতে কাজ করার জন্য।
ড্রিউ জনসন

3

সেক্ষেত্রে, আপনি যদি রেলগুলিতে অ্যাক্টিভেকর্ড অবজেক্টের সাথে ডিল করছেন।

Time.use_zoneপ্রতি অনুরোধ ভিত্তিক টাইমজোন যা ডিফল্ট টাইমজোন সেট আপকে ওভাররাইড করে তার জন্য ব্যবহার করা ভাল ধারণা হতে পারেconfig.time_zone

আরও বিশদটি আমি https://stackoverflow.com/a/25055692/542995 এ ব্যাখ্যা করি


0

আমি 4 রেলগুলিতে সরল_রফর্মটি ব্যবহার করছি এবং আমি কেবল ইনপুট ফিল্ডটি যুক্ত করেছি

<%= f.input :time_zone, :as => :time_zone %>

স্থানান্তর সঙ্গে

class AddTimeZoneColumnToTextmessage < ActiveRecord::Migration
  def change
    add_column :textmessages, :time_zone, :string
  end
end

1
আপনি কীভাবে
ডেটটাইম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.