diff --git a/docs/rector_rules_overview.md b/docs/rector_rules_overview.md
index 5d2de02a..cb49f6e2 100644
--- a/docs/rector_rules_overview.md
+++ b/docs/rector_rules_overview.md
@@ -403,6 +403,25 @@ Change minutes argument to seconds in `Illuminate\Contracts\Cache\Store` and Ill
+## NowFuncWithStartOfDayMethodCallToTodayFuncRector
+
+Changes the user of `now()->startOfDay()` to be replaced with `today()`.
+
+- class: [`RectorLaravel\Rector\FuncCall\NowFuncWithStartOfDayMethodCallToTodayFuncRector`](../src/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector.php)
+
+```diff
+class SomeClass
+{
+ public function run()
+ {
+- now()->startOfDay();
++ today();
+ }
+}
+```
+
+
+
## OptionalToNullsafeOperatorRector
Convert simple calls to optional helper to use the nullsafe operator
diff --git a/src/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector.php b/src/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector.php
new file mode 100644
index 00000000..7e4ffc0e
--- /dev/null
+++ b/src/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector.php
@@ -0,0 +1,50 @@
+startOfDay()', [
+ new CodeSample(
+ <<<'CODE_SAMPLE'
+$now = now()->startOfDay();
+CODE_SAMPLE,
+ <<<'CODE_SAMPLE'
+$now = today();
+CODE_SAMPLE
+ ),
+ ]);
+ }
+
+ public function getNodeTypes(): array
+ {
+ return [MethodCall::class];
+ }
+
+ /**
+ * @param MethodCall $node
+ */
+ public function refactor(Node $node): ?Node\Expr\FuncCall
+ {
+ if (! $this->isName($node->name, 'startOfDay')) {
+ return null;
+ }
+
+ if (! $this->isName($node->var, 'now')) {
+ return null;
+ }
+
+ return $this->nodeFactory->createFuncCall('today');
+ }
+}
diff --git a/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/fixture.php.inc b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/fixture.php.inc
new file mode 100644
index 00000000..78cc125f
--- /dev/null
+++ b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/fixture.php.inc
@@ -0,0 +1,29 @@
+startOfDay();
+ $tomorrow = now()->startOfDay()->addDay();
+ }
+}
+
+?>
+-----
+addDay();
+ }
+}
+
+?>
diff --git a/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/skip_now_with_other_calls.php.inc b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/skip_now_with_other_calls.php.inc
new file mode 100644
index 00000000..9d4fd1b9
--- /dev/null
+++ b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/Fixture/skip_now_with_other_calls.php.inc
@@ -0,0 +1,27 @@
+addDay()->startOfDay();
+ }
+}
+
+?>
+-----
+addDay()->startOfDay();
+ }
+}
+
+?>
diff --git a/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/NowFuncWithStartOfDayMethodCallToTodayFuncRectorTest.php b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/NowFuncWithStartOfDayMethodCallToTodayFuncRectorTest.php
new file mode 100644
index 00000000..93962897
--- /dev/null
+++ b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/NowFuncWithStartOfDayMethodCallToTodayFuncRectorTest.php
@@ -0,0 +1,28 @@
+doTestFile($filePath);
+ }
+
+ public static function provideData(): Iterator
+ {
+ return self::yieldFilesFromDirectory(__DIR__ . '/Fixture');
+ }
+
+ public function provideConfigFilePath(): string
+ {
+ return __DIR__ . '/config/configured_rule.php';
+ }
+}
diff --git a/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/config/configured_rule.php b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/config/configured_rule.php
new file mode 100644
index 00000000..addb73a7
--- /dev/null
+++ b/tests/Rector/FuncCall/NowFuncWithStartOfDayMethodCallToTodayFuncRector/config/configured_rule.php
@@ -0,0 +1,13 @@
+import(__DIR__ . '/../../../../../config/config.php');
+
+ $rectorConfig->rule(\RectorLaravel\Rector\FuncCall\NowFuncWithStartOfDayMethodCallToTodayFuncRector::class);
+};