5

EXIFデータから読み取って、写真のタイムゾーンを特定しようとしています(UTC形式で撮影された日付を変換します)。写真を撮って、そのメタデータを調べてみました。

{
    ColorModel = RGB;
    DPIHeight = 72;
    DPIWidth = 72;
    Depth = 8;
    Orientation = 6;
    PixelHeight = 1936;
    PixelWidth = 2592;
    "{Exif}" =     {
        ApertureValue = "2.970854";
        BrightnessValue = "-2.571174";
        ColorSpace = 1;
        ComponentsConfiguration =         (
            1,
            2,
            3,
            0
        );
        DateTimeDigitized = "2012:12:13 01:21:55";
        DateTimeOriginal = "2012:12:13 01:21:55";
        ExifVersion =         (
            2,
            2,
            1
        );
        ExposureMode = 0;
        ExposureProgram = 2;
        ExposureTime = "0.06666667";
        FNumber = "2.8";
        Flash = 16;
        FlashPixVersion =         (
            1,
            0
        );
        FocalLenIn35mmFilm = 35;
        FocalLength = "3.85";
        ISOSpeedRatings =         (
            1000
        );
        MeteringMode = 5;
        PixelXDimension = 2592;
        PixelYDimension = 1936;
        SceneCaptureType = 0;
        SensingMethod = 2;
        ShutterSpeedValue = "3.9112";
        SubjectArea =         (
            1295,
            967,
            699,
            696
        );
        WhiteBalance = 0;
    };
    "{GPS}" =     {
        Altitude = "258.794";
        AltitudeRef = 0;
        ImgDirection = "24.38477";
        ImgDirectionRef = T;
        Latitude = "45.02183333333333";
        LatitudeRef = N;
        Longitude = "7.610833333333334";
        LongitudeRef = E;
        TimeStamp = "00:21:53.87";
    };
    "{TIFF}" =     {
        DateTime = "2012:12:13 01:21:55";
        Make = Apple;
        Model = "iPhone 4";
        Orientation = 6;
        ResolutionUnit = 2;
        Software = "6.0.1";
        XResolution = 72;
        YResolution = 72;
        "_YCbCrPositioning" = 1;
    };
}

現地時間 (DateTimeOriginal) と UTC 時間 ({GPS}->TimeStamp) があるようですが、この 2 つの間のオフセットについては示されていません。DateTimeOriginal と TimeStamp の違いを特定するために何かを行うことはできますが、2 番目のものには日付がないため、2 つの異なる日をまたぐ場合には注意が必要なようです。

完全な UTC 日付、またはタイムゾーン付きの現地時間を取得する方法はありますか?

緯度/経度データからタイムゾーンを決定することも考えていましたが、これも外部サービスを使用して座標から国を取得する必要があるため、複雑なようです。

4

2 に答える 2

2

あなたの最善の策は、Web サービスを使用することだと思います..これからは何も得られないと思います。

このオプションを選択した場合は、Earthtoolsをご覧ください。タイム オフセットが発生する可能性があると聞きましたが (私は見ていませんでしたが)、必要なのはタイム ゾーンだけなので、気にする必要はありません。

たとえば、フランスのパリのタイムゾーン (座標 48°51'44'N 2°21'03E) が必要な場合は、このページを次のように呼び出します: http://www.earthtools.org/timezone -1.1/40.71417/2.2103で、次の xml ファイルを取得します。

<timezone xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.earthtools.org/timezone.xsd">
    <version>1.0</version>
    <location>
        <latitude>40.71417</latitude>
        <longitude>2.2103</longitude>
    </location>
    <offset>1</offset>
    <suffix>A</suffix>
    <localtime>13 Dec 2012 09:57:58</localtime>
    <isotime>2012-12-13 09:57:58 +0100</isotime>
    <utctime>2012-12-13 08:57:58</utctime>
    <dst>False</dst>
</timezone>
于 2012-12-13T09:02:19.023 に答える
0

タイムスタンプから UTC 日付を取得できるはずですが、それをサポートするドキュメントが見つかりませんでした。

これを試すことができます:

//ALAsset *asset is your photo
NSDate *timestamp = (NSDate *)[asset valueForProperty:@"ALAssetPropertyDate";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:timestamp];

NSLog (@"UTC timestamp: %@", dateString);

https://stackoverflow.com/a/2615847/653513から取得した変換

于 2012-12-13T09:19:29.717 に答える