我正在编写一个C#程序,从JPEG文件中提取EXIF的DateTimeOriginal
字段,如果该属性在数据中存在,并且我需要将其解析为DateTime
值。
我的代码如下:
BitmapFrame src = decoder.Frames[ 0 ];
if ( src.Metadata != null ) {
BitmapMetadata metaData = (BitmapMetadata) src.Metadata;
if ( metaData.ContainsQuery( "/app1/{ushort=0}/{ushort=34665}/{ushort=36867}" ) ) {
object o = metaData.GetQuery( "/app1/{ushort=0}/{ushort=34665}/{ushort=36867}" );
if ( o != null && o is string ) {
string originalDate = Convert.ToString( o );
if ( originalDate != null ) {
if ( !DateTime.TryParseExact( originalDate.Trim(), "yyyy:MM:dd hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out createDate ) ) {
// Sets createDate to a default value if the date doesn't parse.
}
}
}
}
}
然而,在调用
TryParseExact
时,格式字符串无法正常工作,因为代码执行了被注释掉的代码。正确的写法是什么?
DateTimeOriginal
属性中的值格式为 YYYY:MM:DD HH:MM:SS。在 YYYY、MM 和 DD 指示符之间的冒号让我很困惑。为什么要使用冒号?
编辑
我尝试将格式说明符字符串更改为 "yyyy\:MM\dd hh\:mm:\ss",但这也没有起作用。
var
的男人,我的眼睛(和一个Encoding.ASCII
):D计算机历史博物馆的东西 :) - Ruben Bartelink