DEV Community

shaileshs
shaileshs

Posted on

2 1

using Timezone package in flutter

Timezone package makes life a bit easier to deal with those pain in the neck issues related to timezone. However, I had a bunch of issues using that package, so documenting them here for someone else to save some time.

git clone https://github.com/srawlins/timezone.git
cd timezone
flutter pub get
flutter pub run tool/get -s 2020a
cd lib/data
  • Add it to your codebase.
cp lib/data/2020a* <project_dir>/assets/timezone/
cd <project_dir>
git add->commit->push

Also, add it to your pubspec file under assets with the path you used above.

  • Use it in your code.
  Future<void> initTimezones() async {
    // get device timezone
    String dtz = await FlutterNativeTimezone.getLocalTimezone();

    // Load timezone data
    var byteData = await rootBundle.load('assets/timezone/2020a.tzf');
    tz.initializeDatabase(byteData.buffer.asUint8List());
    tz.initializeTimeZones();
    // set the local location.
    tz.setLocalLocation(tz.getLocation(dtz));

    // Iterate and use through the list of timezones.
    _locations = tz.timeZoneDatabase.locations;
    _locations.values.forEach((element) {
        print(element.name);
        print(element.currentTimeZone.abbr);
        print(element.currentTimeZone.offset);
        print(element.currentTimeZone.isDst);
        print(element.zones.length);
      });
  }
  • For timezone conversion, readme on the package provides great examples, so I will skip repetition.

Hope this helps someone.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (1)

Collapse
 
aesthytik profile image
Vipin Kumar Rawat

Hey Shailesh, i have been trying to implemet timezone specific time in the app,
Setup is done now,

I want to know how to add a default timezone for whole app.
I dont want to everytime convert the time.

Is there any way so that i set the time to specific timezone by default?
ad when i do DateTime.now() it gives only that time?

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay