ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
24 visibility
موضوع: آفیس توسط:

GMT مخفف Greenwich Meridian Time است که یک زمان مرجع برای جهان است. این زمان در گرینویچ، انگلستان است و گاهی اوقات به عنوان "زمان زولو" نامیده می شود. (این به ویژه در زبان هوانوردی صادق است. منطقه زمانی GMT ​​اغلب به صورت اختصاری "Z" خوانده می شود که نام آوایی آن زولو است.)

ممکن است نیاز به تبدیل یک زمان محلی به GMT در کاربرگ خود داشته باشید. اگر همیشه می دانید که زمان به وقت محلی وارد می شود، این کار را می توان به راحتی با یک فرمول انجام داد. به عنوان مثال، فرض کنید که در سلول B7 زمان محلی را وارد می کنید و در منطقه زمانی اقیانوس آرام هستید. در این منطقه زمانی، بسته به اینکه آیا ساعت تابستانی در حال اجرا است، یا هفت یا هشت ساعت از GMT عقب هستید. فرمول زیر زمان وارد شده در B7 را با هفت یا هشت ساعت تنظیم می کند، بسته به اینکه تاریخ مرتبط با ساعت در بازه زمانی تابستانی باشد یا خیر.

=IF(AND(B7>=DATEVALUE("3/8/2009 02:00"),B19

به یاد داشته باشید که هر زمان که زمانی را در یک سلول وارد می کنید، اکسل به طور خودکار تاریخ را به آن متصل می کند. بنابراین، اگر زمان 10:15 را در یک سلول وارد کنید، و روزی که وارد می کنید 17 ژانویه باشد، اکسل به طور خودکار ورودی سلول را به 01/17/2009 10:15:00 تبدیل می کند. این کار حتی با وجود اینکه ممکن است فقط زمان را در سلول نمایش دهید انجام می شود - در اکسل، هر تاریخ دارای زمانی مرتبط با آن است و هر زمان دارای تاریخ مرتبط با آن است.

به دلیل این رفتار ورودی، اکسل از فرمولی که به تازگی نشان داده شده است برای انجام تنظیمات مناسب بر اساس تاریخ پیش فرض زمانی که زمان (تاریخ امروز) یا تاریخی را وارد می کنید استفاده می کند.

تنها ایراد این رویکرد فرمولی این است که باید به یاد داشته باشید که تاریخ های مرزی ساعت تابستانی را از سالی به سال دیگر تغییر دهید. (موارد موجود در فرمول مربوط به سال 2009 هستند.) می توانید فرمول را طوری تغییر دهید که در واقع تاریخ های مرزی را در سلول هایی مانند E1 و E2 به صورت زیر ذخیره کنید:

=IF(AND(B7>=$E$1,B19

در حالی که فرمول کوتاه تر است، اما هنوز با تعیین نسبتاً ایستا زمان شروع و پایان زمان تابستان مشکل دارد - باید به یاد داشته باشید که این اطلاعات را به صورت دستی به روزرسانی کنید. علاوه بر این، اگر به منطقه زمانی متفاوتی منتقل می شوید، باید به یاد داشته باشید که مقادیری را که تاریخ و زمان تنظیم می شوند، تغییر دهید.

یک راه بسیار مفید برای رفع این اشکالات، ایجاد یک تابع تعریف شده توسط کاربر است که به رابط ویندوز دسترسی داشته باشد و تعیین کند که تنظیمات سیستم در رایانه شما چیست. سیستم شما به طور خودکار زمان تابستانی و همچنین منطقه زمانی را که در آن هستید ردیابی می کند. دسترسی به این اطلاعات از طریق یک عملکرد تعریف شده توسط کاربر به این معنی است که هرگز نیازی به نگرانی در مورد موارد موجود در کاربرگ خود نخواهید داشت. برای این کار می توانید از ماکرو زیر استفاده کنید:

Option Explicit

Public Declare Function SystemTimeToFileTime Lib _
  "kernel32" (lpSystemTime As SYSTEMTIME, _
  lpFileTime As FILETIME) As Long

Public Declare Function LocalFileTimeToFileTime Lib _
  "kernel32" (lpLocalFileTime As FILETIME, _
  lpFileTime As FILETIME) As Long

Public Declare Function FileTimeToSystemTime Lib _
  "kernel32" (lpFileTime As FILETIME, lpSystemTime _
  As SYSTEMTIME) As Long

Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Public Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Public Function LocalTimeToUTC(dteTime As Date) As Date
    Dim dteLocalFileTime As FILETIME
    Dim dteFileTime As FILETIME
    Dim dteLocalSystemTime As SYSTEMTIME
    Dim dteSystemTime As SYSTEMTIME

    dteLocalSystemTime.wYear = CInt(Year(dteTime))
    dteLocalSystemTime.wMonth = CInt(Month(dteTime))
    dteLocalSystemTime.wDay = CInt(Day(dteTime))
    dteLocalSystemTime.wHour = CInt(Hour(dteTime))
    dteLocalSystemTime.wMinute = CInt(Minute(dteTime))
    dteLocalSystemTime.wSecond = CInt(Second(dteTime))

    Call SystemTimeToFileTime(dteLocalSystemTime, _
      dteLocalFileTime)
    Call LocalFileTimeToFileTime(dteLocalFileTime, _
      dteFileTime)
    Call FileTimeToSystemTime(dteFileTime, dteSystemTime)

    LocalTimeToUTC = CDate(dteSystemTime.wMonth & "/" & _
      dteSystemTime.wDay & "/" & _
      dteSystemTime.wYear & " " & _
      dteSystemTime.wHour & ":" & _
      dteSystemTime.wMinute & ":" & _
      dteSystemTime.wSecond)
End Function

این ممکن است مانند اغلب هنگام کار با تماس های سیستمی، تحمیل کننده به نظر برسد، اما فوق العاده کار می کند. به سه روال سیستم اشاره شده است (SystemTimeToFileTime، LocalFileTimeToFileTime، و FileTimeToSystemTime). با تنظیم تماس ها و استفاده از آنها به ترتیب، تاریخ و زمان به طور خودکار به GMT تنظیم می شود. برای استفاده از تابع، در کاربرگ خود این را برای تبدیل زمان در سلول B7 وارد کنید:

=localtimetoutc(B7)

سلول را به عنوان تاریخ/زمان فرمت کنید و خروجی دقیقاً همان چیزی است که می خواهید.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

74 نفر آنلاین
1 عضو و 73 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 9073
بازدید دیروز: 23827
بازدید کل: 15443589
...