SORU
16 ŞUBAT 2009, PAZARTESİ


Diğer iki tarih arasında rasgele bir tarih oluşturmak

Nasıl diğer iki belirli tarihler arasında olmak için rasgele bir tarih oluşturmak istiyorsunuz? Fonksiyonları imzası bu . böyle bir şey olmalı

randomDate("1/1/2008 1:30 PM", "1/1/2009 4:50 AM", 0.34)
                  ^                       ^          ^

           date generated has   date generated has  random number
           to be after this     to be before this

ve bir tarih dönecekti olarak böyle "2/4/2008 7:20 PM"

CEVAP
16 ŞUBAT 2009, PAZARTESİ


Her iki dizeleri dönüştürmek için zaman damgaları (seçtiğiniz çözünürlük, örneğin, milisaniye, saniye, saat, gün, her neyse), çıkarma, daha önce gelen daha sonra, çarpma rastgele sayı (olduğunu düşünüyorum dağıtılan aralığı [0, 1]) ile olan fark, ve daha eklemek için daha erken. Zaman damgası, tarih geri dize dönüştürmek ve bu aralıkta rastgele bir zaman var.

Örnek (çıktı belirttiğiniz, 0 dolgusu - Amerikan time format kuralları suçlama biçiminde neredeyse) Python:

import random
import time

def strTimeProp(start, end, format, prop):
    """Get a time at a proportion of a range of two formatted times.

    start and end should be strings specifying times formated in the
    given format (strftime-style), giving an interval [start, end].
    prop specifies how a proportion of the interval to be taken after
    start.  The returned time will be in the specified format.
    """

    stime = time.mktime(time.strptime(start, format))
    etime = time.mktime(time.strptime(end, format))

    ptime = stime   prop * (etime - stime)

    return time.strftime(format, time.localtime(ptime))


def randomDate(start, end, prop):
    return strTimeProp(start, end, '%m/%d/%Y %I:%M %p', prop)

print randomDate("1/1/2008 1:30 PM", "1/1/2009 4:50 AM", random.random())

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • Phandroid

    Phandroid

    26 Ocak 2009
  • tinycammonitor

    tinycammonit

    14 Aralık 2010