diff --git a/freezegun/api.py b/freezegun/api.py
index 13484ca..773339c 100644
--- a/freezegun/api.py
+++ b/freezegun/api.py
@@ -1,3 +1,4 @@
+import dateutil
 import datetime
 import functools
 import sys
@@ -21,6 +22,8 @@ except ImportError:
     MayaDT = None
 
 _TIME_NS_PRESENT = hasattr(time, 'time_ns')
+_EPOCH = datetime.datetime(1970, 1, 1)
+_EPOCHTZ = datetime.datetime(1970, 1, 1, tzinfo=dateutil.tz.UTC)
 
 real_time = time.time
 real_localtime = time.localtime
@@ -344,6 +347,19 @@ class FakeDatetime(with_metaclass(FakeDatetimeMeta, real_datetime, FakeDate)):
             tz = tzlocal()
         return datetime_to_fakedatetime(real_datetime.astimezone(self, tz))
 
+    @classmethod
+    def fromtimestamp(cls, t, tz=None):
+        if tz is None:
+            return real_datetime.fromtimestamp(
+                    t, tz=dateutil.tz.tzoffset("freezegun", cls._tz_offset())
+                ).replace(tzinfo=None)
+        return datetime_to_fakedatetime(real_datetime.fromtimestamp(t, tz))
+
+    def timestamp(self):
+        if self.tzinfo is None:
+            return (self - _EPOCH - self._tz_offset()).total_seconds()
+        return (self - _EPOCHTZ).total_seconds()
+
     @classmethod
     def now(cls, tz=None):
         now = cls._time_to_freeze() or real_datetime.now()

datetime.datetime.fromtimestamp returns unexpected values
`datetime.datetime.fromtimestamp` [should return](https://docs.python.org/2/library/datetime.html#datetime.date.fromtimestamp) a local date, but the system timezone is used and the `tz_offset` parameter seems ignored.

```python
import freezegun, datetime, time
with freezegun.freeze_time("1970-01-01 00:00:01"):
    print(datetime.datetime.fromtimestamp(0))

with freezegun.freeze_time("1970-01-01 00:00:01", tz_offset=6):
    print(datetime.datetime.fromtimestamp(0))
```
```bash
# freezegun behavior
$ env TZ=UTC-12 python fromtimestamp.py
1970-01-01 12:00:00
1970-01-01 12:00:00

# Expected results
1970-01-01 00:00:00
1970-01-01 06:00:00
```
diff --git a/tests/test_datetimes.py b/tests/test_datetimes.py
index 4689dcf..b59bd6d 100644
--- a/tests/test_datetimes.py
+++ b/tests/test_datetimes.py
@@ -5,6 +5,7 @@ import unittest
 import locale
 import sys
 from unittest import SkipTest
+from dateutil.tz import UTC
 
 import pytest
 from tests import utils
@@ -456,9 +457,7 @@ def test_nested_context_manager():
 def _assert_datetime_date_and_time_are_all_equal(expected_datetime):
     assert datetime.datetime.now() == expected_datetime
     assert datetime.date.today() == expected_datetime.date()
-    datetime_from_time = datetime.datetime.fromtimestamp(time.time())
-    timezone_adjusted_datetime = datetime_from_time + datetime.timedelta(seconds=time.timezone)
-    assert timezone_adjusted_datetime == expected_datetime
+    assert datetime.datetime.fromtimestamp(time.time()) == expected_datetime
 
 
 def test_nested_context_manager_with_tz_offsets():
@@ -693,7 +692,6 @@ def test_time_ns():
     assert time.time_ns() != expected_timestamp * 1e9
 
 
-@pytest.mark.skip("timezone handling is currently incorrect")
 def test_compare_datetime_and_time_with_timezone(monkeypatch):
     """
     Compare the result of datetime.datetime.now() and time.time() in a non-UTC timezone. These
@@ -704,13 +702,28 @@ def test_compare_datetime_and_time_with_timezone(monkeypatch):
             m.setenv("TZ", "Europe/Berlin")
             time.tzset()
 
-            dt1 = datetime.datetime.now()
-            dt2 = datetime.datetime.fromtimestamp(time.time())
-            assert dt1 == dt2
+            now = datetime.datetime.now()
+            assert now == datetime.datetime.fromtimestamp(time.time())
+            assert now == datetime.datetime.utcfromtimestamp(time.time())
+            assert now == datetime.datetime.utcnow()
+            assert now.timestamp() == time.time()
     finally:
         time.tzset()  # set the timezone back to what is was before
 
 
+def test_timestamp_with_tzoffset():
+    with freeze_time("2000-01-01", tz_offset=6):
+        utcnow = datetime.datetime(2000, 1, 1, 0)
+        nowtz = datetime.datetime(2000, 1, 1, 0, tzinfo=UTC)
+        now = datetime.datetime(2000, 1, 1, 6)
+        assert now == datetime.datetime.now()
+        assert now == datetime.datetime.fromtimestamp(time.time())
+        assert now.timestamp() == time.time()
+        assert nowtz.timestamp() == time.time()
+
+        assert utcnow == datetime.datetime.utcfromtimestamp(time.time())
+        assert utcnow == datetime.datetime.utcnow()
+
 @pytest.mark.skip("timezone handling is currently incorrect")
 def test_datetime_in_timezone(monkeypatch):
     """

pip install -e .
parse_log_pytest
requirements.txt
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
backports.zoneinfo==0.2.1
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
coverage==6.5.0
coveralls==3.3.1
dateparser==1.2.0
docopt==0.6.2
exceptiongroup==1.2.2
-e git+https://github.com/spulec/freezegun.git@2e95d89fb7b4eed9b5242df1a1d9e74c01721b76#egg=freezegun
humanize==4.6.0
idna==3.10
importlib-metadata==6.7.0
iniconfig==2.0.0
maya==0.6.1
mock==5.2.0
packaging==24.0
pendulum==2.1.2
pluggy==1.2.0
pytest==7.4.4
pytest-cov==4.1.0
pytest-cover==3.0.0
pytest-coverage==0.0
python-dateutil==2.9.0.post0
pytz==2025.2
pytzdata==2020.1
regex==2024.4.16
requests==2.31.0
six==1.17.0
snaptime==0.2.4
tomli==2.0.1
typing_extensions==4.7.1
tzlocal==5.1
urllib3==2.0.7
zipp==3.15.0

name: freezegun
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - backports-zoneinfo==0.2.1
      - charset-normalizer==3.4.1
      - coverage==6.5.0
      - coveralls==3.3.1
      - dateparser==1.2.0
      - docopt==0.6.2
      - exceptiongroup==1.2.2
      - freezegun==0.3.13
      - humanize==4.6.0
      - idna==3.10
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - maya==0.6.1
      - mock==5.2.0
      - packaging==24.0
      - pendulum==2.1.2
      - pluggy==1.2.0
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - pytest-cover==3.0.0
      - pytest-coverage==0.0
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - pytzdata==2020.1
      - regex==2024.4.16
      - requests==2.31.0
      - six==1.17.0
      - snaptime==0.2.4
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - tzlocal==5.1
      - urllib3==2.0.7
      - zipp==3.15.0
prefix: /opt/conda/envs/freezegun

tests/test_datetimes.py::test_compare_datetime_and_time_with_timezone tests/test_datetimes.py::test_timestamp_with_tzoffset
tests/test_datetimes.py::test_simple_api tests/test_datetimes.py::test_tz_offset tests/test_datetimes.py::test_timedelta_tz_offset tests/test_datetimes.py::test_tz_offset_with_today tests/test_datetimes.py::test_zero_tz_offset_with_time tests/test_datetimes.py::test_tz_offset_with_time tests/test_datetimes.py::test_time_with_microseconds tests/test_datetimes.py::test_time_with_dst tests/test_datetimes.py::test_manual_increment tests/test_datetimes.py::test_manual_increment_seconds tests/test_datetimes.py::test_move_to tests/test_datetimes.py::test_bad_time_argument tests/test_datetimes.py::test_time_gmtime tests/test_datetimes.py::test_calendar_timegm tests/test_datetimes.py::test_time_clock tests/test_datetimes.py::test_time_localtime tests/test_datetimes.py::test_strftime tests/test_datetimes.py::test_real_strftime_fall_through tests/test_datetimes.py::test_date_object tests/test_datetimes.py::test_old_date_object tests/test_datetimes.py::test_invalid_type tests/test_datetimes.py::test_datetime_object tests/test_datetimes.py::test_function_object tests/test_datetimes.py::test_lambda_object tests/test_datetimes.py::test_generator_object tests/test_datetimes.py::test_maya_datetimes tests/test_datetimes.py::test_old_datetime_object tests/test_datetimes.py::test_decorator tests/test_datetimes.py::test_decorator_wrapped_attribute tests/test_datetimes.py::Tester::test_the_class tests/test_datetimes.py::Tester::test_still_the_same tests/test_datetimes.py::Tester::test_class_name_preserved_by_decorator tests/test_datetimes.py::Tester::test_class_decorator_ignores_nested_class tests/test_datetimes.py::Tester::test_class_decorator_wraps_callable_object_py3 tests/test_datetimes.py::Tester::test_class_decorator_respects_staticmethod tests/test_datetimes.py::test_nice_datetime tests/test_datetimes.py::test_datetime_date_method tests/test_datetimes.py::test_context_manager tests/test_datetimes.py::test_nested_context_manager tests/test_datetimes.py::test_nested_context_manager_with_tz_offsets tests/test_datetimes.py::test_isinstance_with_active tests/test_datetimes.py::test_isinstance_without_active tests/test_datetimes.py::TestUnitTestClassDecorator::test_class_decorator_works_on_unittest tests/test_datetimes.py::TestUnitTestClassDecorator::test_class_name_preserved_by_decorator tests/test_datetimes.py::TestUnitTestClassDecoratorWithNoSetUpOrTearDown::test_class_decorator_works_on_unittest tests/test_datetimes.py::TestUnitTestClassDecoratorSubclass::test_class_decorator_works_on_unittest tests/test_datetimes.py::TestUnitTestClassDecoratorSubclass::test_class_name_preserved_by_decorator tests/test_datetimes.py::UnfrozenInheritedTests::test_time_is_not_frozen tests/test_datetimes.py::FrozenInheritedTests::test_time_is_frozen tests/test_datetimes.py::TestOldStyleClasses::test_direct_method tests/test_datetimes.py::TestOldStyleClasses::test_inherited_method tests/test_datetimes.py::test_min_and_max tests/test_datetimes.py::test_freeze_with_timezone_aware_datetime_in_utc tests/test_datetimes.py::test_freeze_with_timezone_aware_datetime_in_non_utc tests/test_datetimes.py::test_time_with_nested tests/test_datetimes.py::test_should_use_real_time tests/test_datetimes.py::test_time_ns
freezegun/api.py
freezegun/api.py