
نوشته شده توسط
the king
تاریخی که در Exif ثبت میشه استاندارد داره و باید فرمت "YYYY:MM:DD HH:MM:SS" باشه، اما فرض کنیم شما تصویری دارید که YYYY:MM:DD اش YYYY:DD:MM شده.
اولا try catch فراموش نشه، ثانیا می توانیم Date رو string بخونیم و قبل از تبدیل به DateTime این مورد رو بررسی کنیم :
try
{
using (var reader = new ExifLib.ExifReader(textBox1.Text))
{
string dateTimeText;
var dateRegex = new System.Text.RegularExpressions.Regex("(?<year>\\d{ 4})(?<s1>[^\\d])(?<month>\\d{2})(?<s2>[^\\d])(?<day>\\d{2})");
reader.GetTagValue<string>(ExifLib.ExifTags.DateTi me, out dateTimeText);
var match = dateRegex.Match(dateTimeText);
if ((match.Success))
{
if ((int.Parse(match.Groups["month"].Value) > 12) && (int.Parse(match.Groups["day"].Value) <= 12))
{
dateTimeText = dateRegex.Replace(dateTimeText, "${day}/${month}/${year}");
}
else
{
dateTimeText = dateRegex.Replace(dateTimeText, "${month}/${day}/${year}");
}
var dateTime = DateTime.Parse(dateTimeText, CultureInfo.InvariantCulture);
textBox2.Text = dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
ببنید دوست عزیز من با کد بالا جواب نگرفتم ولی مشکل کامل فهمیدم لطفا عکس اول و دوم ببیند
عکس 1
g1.JPG
عکس 2
b1.JPG
ببیند با یک نگاه دقیق میتونید بفهمید که عکس اولی تاریخش ق . ظ و عکس دومی ب . ظ
حالا برنامه من تاریخ تمام عکس هایی که "ق . ظ " نمایش میده ولی ب .ظ با کمال شگفتی نه نشون نمیده
اینم ککدهام که صفرتا صدشو خودت زحمتش کشیدی ممنون میشم کمکم کنی
try
{
using (var reader = new ExifLib.ExifReader(textBox10.Text))
{
DateTime dateTime1;
reader.GetTagValue<DateTime>(ExifLib.ExifTags.Date Time, out dateTime1);
textbox4.Text = dateTime1.ToString(CultureInfo.InvariantCulture);
PersianCalendar p = new PersianCalendar();
DateTime dt = Convert.ToDateTime(textbox4.Text);
int y, m, d;
y = p.GetYear(dt);
m = p.GetMonth(dt);
d = p.GetDayOfMonth(dt);
textbox4.Text = y.ToString() + "/"
+ m.ToString() + "/"
+ d.ToString();
}
}
catch (Exception ex)
{
textbox4.Text = "";
}
}