This is my code:
DateTime Now = DateTime.Parse(DateTime.Now.ToString(), new System.Globalization.CultureInfo("fa-ir"));
The Geogorian date is: 16/06/2016
The Persian date is: 15/03/1395
while the value of Now is: 07/09/2025
The time is correct. What can be the problem?

If you're trying to obtain the year, month and day of "now" in the Persian Calendar, you should use the Calendar class:
using System;
using System.Globalization;
public class Test
{
static void Main()
{
var now = DateTime.Now;
var calendar = new PersianCalendar();
Console.WriteLine($"Year: {calendar.GetYear(now)}");
Console.WriteLine($"Month: {calendar.GetMonth(now)}");
Console.WriteLine($"Day: {calendar.GetDayOfMonth(now)}");
}
}
If you just want to format a value as a string, you can pass the CultureInfo into the ToString call:
using System;
using System.Globalization;
public class Test
{
static void Main()
{
var culture = new CultureInfo("fa-ir");
var now = DateTime.Now;
Console.WriteLine(now.ToString(culture));
}
}
Here, the CultureInfo has a default calendar associated with it (as well as date/time format strings) and that is used to format the value.
A DateTime itself is always effectively in the Gregorian calendar system - there's no way of creating a "DateTime in the Persian Calendar" for example, or "converting" a DateTime from one calendar to another.
Note that in my Noda Time library, that's not true - you can specify a calendar system for a ZonedDateTime, OffsetDateTime, LocalDate or LocalDateTime value, and convert from one to another. If you're doing a lot of calendar work, I'd recommend you at least give Noda Time a try - it's designed to make it a lot harder to make this sort of mistake.
See more on this question at Stackoverflow