من يك تابع براي اين كار نوشتم كه فكر كنم بشه راحت ازش استفاده كرد. البته قبلش بايد تفاوت ساعت سرور هاست رو بگريد كه اونم خيلي ساده هست. بعد توي اين تابع ازش استفاده كنيد.
public static string shamsi(int g_y1, int g_m1, int g_d1, string FormatDate)
{


byte[] g_days_in_month = new byte[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
byte[] j_days_in_month = new byte[] { 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 };

int g_y = 0;
int g_m = 0;
int g_d = 0;
string hh = "";
string mmm = "";


string r = FormatDate;
if ((g_y1 <= 0))
{
g_y = DateTime.Now.AddMinutes(nazari.timediff()).Year;
g_m = DateTime.Now.AddMinutes(nazari.timediff()).Month;
g_d = DateTime.Now.AddMinutes(nazari.timediff()).Day;
hh = DateTime.Now.AddMinutes(nazari.timediff()).Hour.To String();
mmm = DateTime.Now.AddMinutes(nazari.timediff()).Minute. ToString();
}
else
{
g_y = g_y1;
g_m = g_m1;
g_d = g_d1;
hh = DateTime.Now.Hour.ToString();
mmm = DateTime.Now.Minute.ToString();
}


int gy = g_y - 1600;
int gm = g_m - 1;
int gd = g_d - 1;
int g_day_no = 365 * gy + nazari.div((gy + 3), 4) - nazari.div((gy + 99), 100) + nazari.div((gy + 399), 400);
int i;
for (i = 0; i < gm; ++i)
g_day_no += g_days_in_month[i];
if (gm > 1 && ((gy % 4 == 0 && gy % 100 != 0) || (gy % 400 == 0)))
g_day_no++;

g_day_no += gd;
int j_day_no;
j_day_no = g_day_no - 79;

int j_np = nazari.div(j_day_no, 12053);
j_day_no = j_day_no % 12053;


int jy = 979 + 33 * j_np + 4 * nazari.div(j_day_no, 1461);
j_day_no %= 1461;

if (j_day_no >= 366)
{
jy += nazari.div(j_day_no - 1, 365);
j_day_no = (j_day_no - 1) % 365;
}

for (i = 0; i < 11 && j_day_no >= j_days_in_month[i]; ++i)
j_day_no -= j_days_in_month[i];
int jm = i + 1;
int jd = j_day_no + 1;

string yy = jy.ToString();
string mm = jm.ToString();
string dd = jd.ToString();
if (mmm.Length == 1)
r = r.Replace("MM", "0" + mmm);
else r = r.Replace("MM", mmm);

r = r.Replace("M", mmm);

if (hh.Length == 1)
r = r.Replace("hh", "0" + hh);
else r = r.Replace("hh", hh);
r = r.Replace("h", hh);

if (dd.Length == 1)
r = r.Replace("dd", "0" + dd);
else r = r.Replace("dd", dd);
r = r.Replace("d", dd);

if (mm.Length == 1)
r = r.Replace("mm", "0" + mm);
else r = r.Replace("mm", mm);
r = r.Replace("m", mm);
r = r.Replace("yyyy", yy);
r = r.Replace("yy", yy.Substring(2, 2));

return r;
}

public static int timediff()
{

return 0;// (4 * 60) + 30;
}

تفاوت ساعت رو به دقيقه بنويسيد
بعد براي استافده مثلا مي تونيد اينطوري بنويسيد
label1.text=shamsi(2009,6,6,"yy/mm/dd hh:MM")
توجه داشته باشيد كه MM مربوط به ساعت حتما بايد با حروف بزرگ باشد